美文网首页
Java基础---集合类

Java基础---集合类

作者: 胡伟红 | 来源:发表于2020-01-16 19:15 被阅读0次
    • 为什么出现集合类

    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常见的一种方式

    • 数组和集合类同是容器,有何不同?

    数组虽然可以存储对象,但长度是固定的:集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。

    • 集合类的特点

    集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

    image.png

    1.ArrayList

    • 1.add方法的参数类型是Object,以便于接收任意类型对象
    • 2.集合中存储都是对象的引用(地址)
    //创建一个集合容器,使用Collection接口的子类,ArrayList
    ArrayList a1 = new ArrayList();
    //添加元素
    a1.add("java01");
    a1.add("java02");
    a1.add("java03");
    a1.add("java04");
    //打印原集合
    System.out.println(a1);
    //删除元素
    a1.remove("java02");
    //删除后的集合
    System.out.println(a1);
    //判断元素是否存在
    System.out.println("java03是否存在"+a1.contains("java03"));
    //获取个数,集合的长度
    System.out.println("size:"+a1.size());
    //清除集合元素
    a1.clear();
    System.out.println("size:"+a1.size());
    
    System.out.println("集合是否为空?"+a1.isEmpty());
    

    运行结果:
    [java01, java02, java03, java04]
    [java01, java03, java04]
    java03是否存在true
    size:3
    size:0
    集合是否为空?true

    • 去交集

    ArrayList a1 = new ArrayList();
    //添加元素
    a1.add("java01");
    a1.add("java02");
    a1.add("java03");
    a1.add("java04");
    
    ArrayList a2 = new ArrayList();
    //添加元素
    a2.add("java01");
    a2.add("java02");
    a2.add("java05");
    a2.add("java06");
    a1.retainAll(a2);//去交集,all中只会保留和a2中相同的元素
    a1.removeAll(a2);//去掉a1中与a2中元素相同的元素
    System.out.println("a1:"+a1);
    System.out.println("a2:"+a2);
    

    运行结果:
    a1:[java01, java02]
    a2:[java01, java02, java05, java06]
    a1:[]
    a2:[java01, java02, java05, java06]

    • 取出元素-迭代器(Iterator)

    image.png


    add(index,element);
    addAll(index,Colllection);

    remove(index);

    set(index,element);

    get(index);
    subList(from,to);
    listIterator();

    ArrayList a1 = new ArrayList();
    //添加元素
    a1.add("java01");
    a1.add("java02");
    a1.add("java03");
    a1.add("java04");
    
    //修改元素
    a1.set(1,"java05");
    
    //get(1)通过角标获取元素
    for(int x = 0;x< a1.size(); x++){
    System.out.println("a1("+ x +") = "+ a1.get(x));
    }
    
    Iterator it = a1.iterator();
    while(it.hasNext()){
    System.out.println("next:"+ it.next());
    //通过indexOf获取对象的位置
    System.out.println("index="+a1.indexOf("java03"));
    }
    

    运行结果:
    a1(0) = java01
    a1(1) = java05
    a1(2) = java03
    a1(3) = java04
    next:java01
    next:java05
    next:java03
    next:java04
    index=2
    //通过下标获取一个子List
    List sub = a1.subList(1,3);
    System.out.println("sub="+sub);
    sub=[java05, java03]

    2.HashSet

    • Set:元素是无序,元素不可以重复,该集合体系没有索引

    Set和Collection的功能是一致
    |---HashSet底层结构是哈希表
    存储唯一元素并允许空值
    保持插入顺序
    不是线程安全的
    |---TreeSet

    Set<String>hashSet = new HashSet<>();
    hashSet.add("String add01");
    hashSet.add("String add02");
    hashSet.add("String add03");
    hashSet.add("String add04");//true
    hashSet.add("String add04");//faulse
    hashSet.add("String add04");//faulse
    System.out.println(hashSet);
    

    和表中存储的时候的顺序不一定一致,保持唯一性,存储多个相同的值,是存储不进去的
    运行结果:
    [String add01, String add04, String add03, String add02]

    相关文章

      网友评论

          本文标题:Java基础---集合类

          本文链接:https://www.haomeiwen.com/subject/xtfqzctx.html