Java之集合(15个demo)

2023-11-07

本节主要介绍java的集合,主要包括List、Set和Map,其中List的子类ArrayList和LinkedList,Set的子类HashSet和TreeSet,Map的字类HashMap等,介绍了集合的常用方法,Collections工具类以及Comparable和Comparator排序方法,同时介绍了泛型和集合的嵌套使用等。

目录

1-List集合的三种遍历方式及常用方法

2-List集合存储学生对象并遍历

3-List集合的子类ArrayList和LinkedList

4-Set集合的字类HashSet

5-Set集合字类之TreeSet

6-TreeSet集合Comparable自然排序(实现该接口并重写CompareTo()方法)

7-TreeSet集合比较排序器Comparator(匿名内部类方式)

8-泛型类的使用

9-泛型方法的使用

10-泛型接口的使用

11-Map集合之HashMap

12-ArrayList嵌套HashMap

13-HashMap嵌套ArrayList

14-HashMap统计字符串每个字符出现次数

15-Collections工具类的使用(存储学生集合并排序)


1-List集合的三种遍历方式及常用方法

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CollectionDemo01 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>() ;
        list.add("java") ;
        list.add("python") ;
        list.add("c++") ;

        //增强for遍历
        for(String s : list){
            System.out.println(s);
        }

        //迭代器遍历
        Iterator<String> iterator = list.iterator() ;
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

        //for循环遍历
        for(int i=0; i<list.size(); i++){
            System.out.println(list.get(i));
        }

        //删除指定索引的元素
        list.remove(1);
        //修改指定索引的元素
        list.set(1,"Matlab") ;
        //获得指定索引的元素
        System.out.println(list.get(1)) ;
    }
}

2-List集合存储学生对象并遍历

public class Student  {
    private  String name ;
    private int age ;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CollectionDemo02 {
    public static void main(String[] args) {
        Student s1 = new Student("张三", 15) ;
        Student s2 = new Student("李四", 18) ;
        Student s3 = new Student("王五", 16) ;

        List<Student> list = new ArrayList<>() ;
        list.add(s1) ;
        list.add(s2) ;
        list.add(s3) ;

        //迭代器遍历
        Iterator<Student> iterator = list.iterator() ;
        while(iterator.hasNext()){
            Student s = iterator.next() ;
            System.out.println(s.getName() + "," + s.getAge());
        }

        //增强for循环遍历
        for(Student student : list){
            System.out.println(student.getName() + "," + student.getAge());
        }

        //for循环遍历
        for(int i=0; i<list.size(); i++){
            System.out.println(list.get(i).getName() + "," + list.get(i).getAge() );
        }

    }
}

3-List集合的子类ArrayList和LinkedList

import java.util.ArrayList;
import java.util.LinkedList;

public class CollectionDemo03 {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>() ;
        arrayList.add("java");
        arrayList.add("python");
        arrayList.add("c++");
        for(String s : arrayList){
            System.out.println(s);
        }

        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("Matlab") ;
        linkedList.add("r") ;
        linkedList.add("js");
        for(String s : linkedList){
            System.out.println(s);
        }

        //LinkedList的特有功能
        linkedList.addFirst("hello");
        linkedList.addLast("world");
        System.out.println(linkedList.getFirst());
        System.out.println(linkedList.getLast());
        linkedList.removeFirst() ;
        linkedList.removeLast() ;

    }
}

4-Set集合的字类HashSet


import java.util.HashSet;
import java.util.LinkedHashSet;

public class CollectionDemo04 {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>() ;
        hashSet.add("java") ;
        hashSet.add("c") ;
        hashSet.add("python") ;

        for(String s : hashSet){
            System.out.println(s);
        }

        //LinkedHashSet,链表保证有序,HashSet保证唯一
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>() ;
        linkedHashSet.add("java") ;
        linkedHashSet.add("c") ;
        linkedHashSet.add("python") ;
        linkedHashSet.add("java") ;
        for(String s : linkedHashSet){
            System.out.println(s);
        }

    }
}

5-Set集合字类之TreeSet

import java.util.TreeSet;

public class CollectionDemo {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>() ;
        treeSet.add(20) ;
        treeSet.add(10) ;
        treeSet.add(30);
        treeSet.add(5) ;
        treeSet.add(20) ;

        //TreeSet集合有序且元素唯一
        for(Integer x : treeSet){
            System.out.println(x);
        }
    }
}

6-TreeSet集合Comparable自然排序(实现该接口并重写CompareTo()方法)

public class Student implements Comparable<Student> {
    private  String name ;
    private int age ;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }


    @Override
    public int compareTo(Student s) {
        int num1 = this.age - s.age ;
        int num2 = num1 == 0 ? this.name.compareTo(s.name) : num1 ;
        return num2 ;
    }
}
import java.util.TreeSet;

public class CollectionDemo05 {
    /**
     * 需求:存储学生对象并遍历,按照年龄由小到大排序,
     * 若年龄相同,按照姓名的字母顺序排序
     * @param args
     */
    public static void main(String[] args) {
        TreeSet<Student> treeSet = new TreeSet<>() ;

        Student s1 = new Student("zhangsan", 14) ;
        Student s2 = new Student("lisi", 14) ;
        Student s3 = new Student("wangwu", 13);
        Student s4 = new Student("maliu", 17) ;
        Student s5 = new Student("maliu", 17) ;

        treeSet.add(s1) ;
        treeSet.add(s2) ;
        treeSet.add(s3) ;
        treeSet.add(s4) ;
        treeSet.add(s5) ;

        for(Student s : treeSet){
            System.out.println(s.getName() + "," + s.getAge());
        }

    }
}

7-TreeSet集合比较排序器Comparator(匿名内部类方式)

public class Student  {
    private  String name ;
    private int age ;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}
import java.util.Comparator;
import java.util.TreeSet;

public class CollectionDemo06 {
    public static void main(String[] args) {
        TreeSet<Student> treeSet = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
               int num1 = s1.getAge() - s2.getAge() ;
               int num2 = num1==0 ? s1.getName().compareTo(s2.getName()) : num1 ;
               return num2 ;
            }
        }) ;

        Student s1 = new Student("zhangsan", 14) ;
        Student s2 = new Student("lisi", 14) ;
        Student s3 = new Student("wangwu", 13);
        Student s4 = new Student("maliu", 17) ;
        Student s5 = new Student("maliu", 17) ;

        treeSet.add(s1) ;
        treeSet.add(s2) ;
        treeSet.add(s3) ;
        treeSet.add(s4) ;
        treeSet.add(s5) ;

        for(Student s : treeSet){
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
}

8-泛型类的使用


public class Generic<T> {
    private T t ;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}
public class CollectionDemo07 {
    public static void main(String[] args) {
        /**
         * 泛型类的好处:在定义时候不需要确实具体的方法参数类型
         * 方法调用的时候再给出具体的类型,避免多次写重载方法
         */
        Generic<String> generic = new Generic<>() ;
        generic.setT("张三");

        Generic<Integer> generic1 = new Generic<>() ;
        generic1.setT(18);

        Generic<Boolean> generic2 = new Generic<>() ;
        generic2.setT(true);

        System.out.println(generic.getT() + "," + generic1.getT() + "," + generic2.getT());
    }
}

9-泛型方法的使用

public class Generic1 {
    public <T> void show(T t){
        System.out.println(t);
    }
}
public class CollectionDemo08 {
    public static void main(String[] args) {
        //定义泛型方法,可以在调用的时候传递任意类型的参数
        Generic1 generic = new Generic1() ;
        generic.show("张三");
        generic.show(18);
        generic.show(true);
    }
}

10-泛型接口的使用


public interface Generic2 <T>{
    void show(T t) ;
}

public class Generic2Impl <T>  implements Generic2<T>{
    @Override
    public void show(T t) {
        System.out.println(t);
    }
}
public class CollectionDemo09 {
    public static void main(String[] args) {
        Generic2<String> generic2 = new Generic2Impl<>() ;
        generic2.show("张三");

        Generic2<Integer> generic3 = new Generic2Impl<>() ;
        generic3.show(15) ;
    }
}

11-Map集合之HashMap

import java.util.HashMap;
import java.util.Map;

public class CollectionDemo10 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>() ;
        map.put("张三", 18) ;
        map.put("李四", 20) ;
        map.put("王五", 19) ;

        System.out.println(map);
        System.out.println(map.isEmpty()); //判空操作
        System.out.println(map.size()); //集合大小
        System.out.println(map.containsKey("张三"));//是否包含键
        System.out.println(map.containsValue(18)); //是否包含值
        System.out.println(map.remove("张三")); //删除键值对
//        map.clear(); //清空集合

        //获取键值对的方式
        for(String key : map.keySet()){
            System.out.println(key + "," + map.get(key));
        }

        for(Map.Entry m : map.entrySet()){
            System.out.println(m.getKey() + "," + m.getValue());
        }
    }
}

12-ArrayList嵌套HashMap

import java.util.ArrayList;
import java.util.HashMap;

public class CollectionDemo11 {
    public static void main(String[] args) {
        ArrayList<HashMap> arrayList = new ArrayList<>() ;
        HashMap<String,String> h1 = new HashMap<>() ;
        h1.put("张三", "18") ;
        h1.put("李四", "17") ;

        HashMap<String,String> h2 = new HashMap<>() ;
        h2.put("马六", "19") ;
        h2.put("李五", "14") ;

        HashMap<String,String> h3 = new HashMap<>() ;
        h3.put("张二", "10") ;
        h3.put("李三", "13") ;

        arrayList.add(h1) ;
        arrayList.add(h2);
        arrayList.add(h3);

        for(HashMap<String,String> hashMap : arrayList){
            for(String key : hashMap.keySet()){
                System.out.println(key + "," + hashMap.get(key));
            }
        }


    }
}

13-HashMap嵌套ArrayList

import java.util.ArrayList;
import java.util.HashMap;

public class CollectionDemo12 {
    public static void main(String[] args) {

        HashMap<String, ArrayList> hashMap = new HashMap<>();

        ArrayList<String> array1 = new ArrayList<>();
        array1.add("唐僧");
        array1.add("孙悟空") ;
        hashMap.put("西游记",array1) ;

        ArrayList<String> array2 = new ArrayList<>() ;
        array2.add("武松") ;
        array2.add("鲁智深") ;
        hashMap.put("水浒传",array2) ;

        for(String key : hashMap.keySet()){
            ArrayList<String> values = hashMap.get(key) ;
            System.out.println(key);
            for(String value : values){
                System.out.println(value);
            }
        }
        
    }
}

14-HashMap统计字符串每个字符出现次数

import java.util.HashMap;
import java.util.Scanner;

public class CollectionDemo13 {
    public static void main(String[] args) {
        HashMap<Character,Integer> map = new HashMap<>() ;
        Scanner input = new Scanner(System.in) ;

        String str = input.nextLine() ;

//        for(int i=0; i<str.length(); i++){
//            char key = str.charAt(i) ;
//            if(!map.containsKey(key)){
//                map.put(key,1) ;
//            }else{
//                int count = map.get(key) + 1 ;
//                map.put(key,count) ;
//            }
//        }
        for(int i=0; i<str.length(); i++){
            char key = str.charAt(i) ;
            int value = map.getOrDefault(key,0) +1 ;
            map.put(key,value) ;
        }

        for(char key : map.keySet()){
            System.out.println(key + "的个数是:" + map.get(key));
        }

    }
}

15-Collections工具类的使用(存储学生集合并排序)

public class Student  {
    private  String name ;
    private int age ;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class CollectionDemo14 {
    public static void main(String[] args) {
        ArrayList<Student> arrayList = new ArrayList<>() ;
        Student s1 = new Student("linqinngxia", 30) ;
        Student s2 = new Student("zhangmanyu",35) ;
        Student s3 = new Student("wangzuxian", 33) ;
        Student s4 = new Student("liuyan", 33) ;

        arrayList.add(s1);
        arrayList.add(s2);
        arrayList.add(s3);
        arrayList.add(s4);

        /**
         * 按年龄有小到大排序,年龄相同时,
         * 按照姓名字母顺序排序
         */
        Collections.sort(arrayList, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                int num1 = s1.getAge() - s2.getAge() ;
                int num2 = num1 == 0 ? s1.getName().compareTo(s2.getName()) : num1 ;
                return num2 ;
            }
        });

        for(Student student : arrayList){
            System.out.println(student.getName() + "," + student.getAge());
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java之集合(15个demo) 的相关文章

随机推荐

  • java自定义排序

    java中sort的自定义排序 一 Arrays sort nums 的一般用法 二 最大数 力扣179 三 合并区间 力扣59 四 总结 一 Arrays sort nums 的一般用法 整个数组按照升序排序 若需要降序排序 将数组转置即
  • ng-model数据绑定实例

    ng mode的作用是数据绑定 placeholder是默认显示值 在input里面输入任何字符都会对应显示到你下面ng model对应的name中 name
  • Python 3基础教程19-模块导入语法

    本文开始介绍模块导入的一些基本语法 我们现在还在Python自带的IDLE编辑器里写Python代码 如果你要需要一个功能 例如build in的模块 那么你就需要先导入这个模块 然后才能使用这个模块相关方法 不像在Pycharm编辑器了
  • 剑指 Offer 18. 删除链表的节点

    题目链接 18 删除链表的节点 Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x next NULL c
  • 良品铺子年报:将冲击百亿营收门槛 斥资1.8亿现金分红

    雷递网 雷建平 3月23日报道 良品铺子 603719 SH 日前公布2021年度业绩 财报显示 良品铺子2021年公司营收93 24亿元 较2020年的78 94亿元增长18 11 近五年营收翻番 这意味着 良品铺子2022年将冲击百亿门
  • local_irq_save和 local_irq_disable

    如果你要禁止所有的中断该怎么办 在2 6内核中 可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理 这两个函数定义在
  • constraints java_java-来自javax.validation.constraints的注释不起作用

    java 来自javax validation constraints的注释不起作用 使用id 如name NotNull等 中的注释需要什么配置 这是我的代码 import javax validation constraints Not
  • 深入理解Solidity——创建合约

    Solidity的合约类似于面向对象语言中的类 它们包含存放持久化数据的状态变量和可修改这些变量的函数 调用不同的合约实例上的函数将执行EVM函数调用 从而切换上下文 使得状态变量不可访问 创建合约 Creating Contracts 合
  • 支付宝商户转账给支付宝个人

    首先引入支付宝的jar
  • TorchServe部署pytorch模型

    文件准备 1 model file model py 参考 https github com pytorch serve blob master examples object detector maskrcnn model py 2 se
  • GODIVA论文阅读

    论文链接 GODIVA Generating Open DomaIn Videos from nAtural Descriptions 文章目录 摘要 引言 相关工作 Video to video generation Text to im
  • Hadoop3.2.*安装

    CentOS8系统安装Hadoop 3 2 1伪分布式配置 Hadoop3 2 1版本的环境搭建 Java提升营 博客园 TOC 实验目的 在 Linux VM15pro CentOS8 环境下完成Hadoop 3 2 1伪分布式环境的搭建
  • 格密码学习,抽代基础学习(二)

    今天找到了一个比较新手友好的slides 结合lec1和学姐的笔记一起看 full rank lattice 满格 R n mathbb R n Rn的概念 n维度实数集 每个元素是n维向量 向量中的每个分量是实数 Z
  • 数据分析时,进行数据建模该如何筛选关键特征?

    1 为什么要做关键特征筛选 在数据量与日俱增的时代 我们收集到的数据越来越多 能运用到数据分析挖掘的数据也逐渐丰富起来 但同时 我们也面临着如何从庞大的数据中筛选出与我们业务息息相关的数据 大背景 从数据中挖掘潜在的规律 辅助我们在实际业务
  • 2.block_device_operations结构体

    在块设备驱动中 有一个类似于字符设备驱动中file operations结构体的block device operations结构体 他是对块设备操作的集合 1 block device operations结构体 2 打开和释放 int
  • Linux上配置http上网代理

    有些局域网环境上网需要使用代理上网 图形界面的很好解决就设置一下浏览器的代理就好了 但是linux纯命令行的界面就需要手动配置了 如果要全局用户使用应用于所有的Shell 就需要修改 etc profile 文件 vi etc profil
  • GhostNet网络详解

    1 GhostNet网络 一张图片经过神经网络进行特征提取后 能够得到很多特征图 在特征图中会有一些相似性很高 这就是神经网络中存在的特征图冗杂的情况 如图中扳手相连的两幅特征图 作者认为可以对其中的一个特征图进行 Cheap Operat
  • vue全局自定义指令

    知识点 指令定义函数提供了几个钩子函数 可选 bind 只调用一次 指令第一次绑定到元素时调用 可以定义一个在绑定时执行一次的初始化动作 inserted 被绑定元素插入父节点时调用 父节点存在即可调用 不必存在于 document 中 u
  • 看穿式监管来了

    收藏关注 台电脑登录 个账号 或者 个账号 台电脑同时登录 会有什么后果 根据监管部门 关于加强证券期货经营机构客户交易终端信息等客户信息管理的规定 关于进一步加强期货经营机构客户交易终端信息采集有关事项的公告 的要求 我司正式启动交易终端
  • Java之集合(15个demo)

    本节主要介绍java的集合 主要包括List Set和Map 其中List的子类ArrayList和LinkedList Set的子类HashSet和TreeSet Map的字类HashMap等 介绍了集合的常用方法 Collections