集合详解(集合常用方法、集合遍历、集合数组互换)

集合

  1. 定义:与数组一样,可以保留一组数据,并提供了操作数组元素的相关方法,使用更方便

  2. 集合框架相关接口:

    • java.util.Collection接口:是所有集合的顶级接口,封装了所有集合所共有的方法,下面有很多实现类,因此我们可以有更多的数据结构来选择。

    • Collection接口下面的子接口:

      • java.util.List:线性表,是可以重复集合,并且有序

        • java.util.ArrayList:List的实现类,提供了快速基于索引访问元素的方式,大部分情况用于查询集合元素,访问集合元素的效率优秀

        • java.util.LinkedList:List的实现类,采用链表结构保存对象,查询性能不好,首尾增删性能好

          注意:在对集合操作的增删性能没有特别苛刻的要求时,通常选择ArrayList

      • java.util.Set:不可重复集合,大部分实现类是无序的

  3. Collection的常用方法:

    1. add():向集合中添加一个元素,成功添加则返回true,否则返回false

      Collection c = new ArrayList();
      c.add("one");
      c.add("two");
      c.add("three");
      System.out.println(c);//[one,two,three]
    2. size():返回当前集合的元素个数

      Collection c = new ArrayList();
      c.add("one");
      c.add("two");
      c.add("three");
      int a=c.size();
      System.out.println(a);//3
    3. isEmpty():判断当前集合是否为空集,当且仅当size()为0时返回true

      Collection c = new ArrayList();
      c.add("one");
      c.add("two");
      c.add("three");
      boolean a=c.isEmpty();
      System.out.println(a);//false
    4. clear():清空集合

      Collection c = new ArrayList();
      c.add("one");
      c.add("two");
      c.add("three");
      c.clear();
      System.out.println(c);//[]
    5. contains():判断集合是否包含某元素(equals()相等即为true)

      Collection c = new ArrayList();
      c.add("one");
      c.add("two");
      c.add("three");
      boolean contains=c.contains("one")
      System.out.println(contains);//true,如果用于比较对象,那么那个对象对应的类必须重写equals()方法
    6. remove():从集合中删除给定元素(equals()相等即为true),成功删除则返回true

      Collection c = new ArrayList();
      c.add("one");
      c.add("two");
      c.add("three");
      c.ramove("one");
      System.out.println(c);[two,three]
    7. addAll():将参数集合中的元素添加到当前集合中,添加后当前集合发生改变则返回true

      Collection c1 = new ArrayList();
      c1.add("java");
      c1.add("c++");
      Collection c2 = new ArrayList();
      c2.add("android");
      c2.add("ios");
      c1.addAll(c2);
      System.out.println("c1:"+c1); //c1:[java, c++,  android, ios]
    8. containsAll():判断当前集合中是否包含参数集合中的所有元素

      Collection c1 = new ArrayList();
      c1.add("java");
      c1.add("c++");
      Collection c2 = new ArrayList();
      c2.add("android");
      c2.add("ios");
      c1.addAll(c2);
      System.out.println("c1:"+c1); 
    9. ratainAll():取交集(交集元素留着)

      Collection c1 = new ArrayList();
      c1.add("java");
      c1.add("c++");
      Collection c2 = new ArrayList();
      c2.add("android");
      c2.add("java");
      c1.retainAll(c2);
      System.out.println("c1:"+c1); //c1:[java]
    10. removeAll():删交集(交集元素删除)

      Collection c1 = new ArrayList();
      c1.add("java");
      c1.add("c++");
      Collection c2 = new ArrayList();
      c2.add("android");
      c2.add("java");
      c1.removeAll(c2);
      System.out.println("c1:"+c1); //c1:[c++]


  4. 集合的遍历

    1. 迭代器模式:由Collection接口提供,通过iterator()方法可以获取一个用于遍历当前集合元素的迭代器(Iterator接口)

    2. 相关接口:

      • java.util.Iterator接口:定义了迭代器遍历集合的相关操作,不同的集合都实现了用于遍历自身元素的迭代器实现类,但我们无需记住它们的名字,从多态的角度把它们看成Iterator即可。

    3. 遍历步骤:问(hasNext())、取(next())、删(remove()),但删除并不是必要操作

      常用方法:

      1. boolean hasNext()----------问(必要操作) 作用:询问集合是否还有"下一个"元素可供迭代 注意:迭代器默认开始位置在集合第1个元素之前 无论调用了多少次的hasNext(),迭代器的位置都不会改变

      2. Object next()--------------取(必要操作) 作用:迭代器向后移动一个位置来指向集合的下一个元素并将其获取

      3. void remove()--------------删(删除并非必要操作) 作用:删除next()方法所获取的元素

    4. 例:

      Collection c = new ArrayList();
      c.add("one");
      c.add("two");
      c.add("three");
      Iterator it=c.iterator();//获取集合c的迭代器
      while(it.hasNext()){//若有下一个元素
          String str=(String)it.next(); //获取下一个元素并强转为String类型
          System.out.println(str);//依次打印集合元素
          it.remove(); //删除next()方法所获取的元素
      }
      System.out.println(c);//[]
    5. 增强for循环

      1. 内部实质也是迭代器,故不能动态的增删元素(其他详见1.8.4介绍)

      2. 例:

        Collection c = new ArrayList();
        c.add("one");
        c.add("two");
        c.add("three");
        for(Object obj : c){ //obj代表集合中的每个元素
            String str = (String)obj;
            System.out.println(str);//依次打印集合元素
        }
    6. Arrays.toString()

      1. 作用:将集合元素转化为字符串,与输出语句配合,可以实现集合元素的打印

      2. 例:

        Collection c = new ArrayList();
        c.add("one");
        c.add("two");
        c.add("three");
        System.out.println(Arrays.toString(c));//[one,two,three]


  5. 集合与数组互换

    1. toArray():集合转换为数组

      Collection<String> c = new ArrayList<>();
      c.add("one");
      c.add("two");
      c.add("three");
      String[] array = c.toArray(new String[5]);
      System.out.println(Arrays.toString(array));


    2. Arrays.asList():数组转换为集合

      String[] array = {"one", "two", "three", "four", "five"};
      List<String> list = Arrays.asList(array);
      System.out.println("list:"+list); //[one, two, three, four, five]

    3. 注意:

      对数组操作,集合也会相应改变

猜你喜欢

转载自blog.csdn.net/m0_69270622/article/details/129959253
今日推荐