• Java集合框架


    什么是集合

    集合与数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便.

    java集合框架中相关接口

    java.util.Collection接口:

    java.util.Collection是所有集合的顶级接口.Collection下面有多种实现类,因此我们有更多的数据结构可供选择.

    Collection下面有两个常见的子接口:

    • java.util.List:线性表.是可重复集合,并且有序.
    • java.util.Set:不可重复的集合,大部分实现类是无序的.

    这里可重复指的是集合中的元素是否可以重复,而判定重复元素的标准是依靠元素自身equals比较

    的结果.为true就认为是重复元素.

     

    常用方法:

    boolean add(E e):向集合中添加一个元素,成功添加则返回true

    int size():返回当前集合的元素个数

    boolean isEmpty():判断当前集合是否为空集.当且仅当size=0时返回true.

    void clear():清空集合

    1. import java.util.ArrayList;
    2. import java.util.Collection;
    3. public class CollectionDemo {
    4.    public static void main(String[] args) {
    5.        Collection c = new ArrayList();
    6.        /*
    7.            boolean add(E e)
    8.            向当前集合中添加一个元素.当元素成功添加后返回true
    9.         */
    10.        c.add("one");
    11.        c.add("two");
    12.        c.add("three");
    13.        c.add("four");
    14.        c.add("five");
    15.        System.out.println(c);
    16.        /*
    17.            int size()
    18.            返回当前集合的元素个数
    19.         */
    20.        int size = c.size();
    21.        System.out.println("size:"+size);
    22.        /*
    23.            boolean isEmpty()
    24.            判断当前集合是否为空集(不含有任何元素)
    25.         */
    26.        boolean isEmpty = c.isEmpty();
    27.        System.out.println("是否为空集:"+isEmpty);
    28.        /*
    29.           清空集合
    30.         */
    31.        c.clear();
    32.        System.out.println(c);
    33.        System.out.println("size:"+c.size());//0
    34.        System.out.println("是否为空集:"+c.isEmpty());
    35.   }
    36. }

    boolean contains(Object o):判断集合是否包含给定元素

    boolean remove(Object o):从集合中删除给定元素,成功删除返回true.

    1. import java.util.ArrayList;
    2. import java.util.Collection;
    3. import java.util.HashSet;
    4. public class CollectionDemo2 {
    5.    public static void main(String[] args) {
    6. //       Collection c = new ArrayList();
    7.        Collection c = new HashSet();
    8.        c.add(new Point(1,2));
    9.        c.add(new Point(3,4));
    10.        c.add(new Point(5,6));
    11.        c.add(new Point(7,8));
    12.        c.add(new Point(1,2));
    13.        /*
    14.            集合重写了Object的toString方法,输出的格式为:
    15.            [元素1.toString(), 元素2.toString(), ....]
    16.         */
    17.        System.out.println(c);
    18.        Point p = new Point(1,2);
    19.        /*
    20.            boolean contains(Object o)
    21.            判断当前集合是否包含给定元素,这里判断的依据是给定元素是否与集合
    22.            现有元素存在equals比较为true的情况。
    23.         */
    24.        boolean contains = c.contains(p);
    25.        System.out.println("包含:"+contains);
    26.        /*
    27.            remove用来从集合中删除给定元素,删除的也是与集合中equals比较
    28.            为true的元素。注意,对于可以存放重复元素的集合而言,只删除一次。
    29.         */
    30.        c.remove(p);
    31.        System.out.println(c);
    32.   }
    33. }

    boolean addAll(Collection c):将给定集合所有元素添加到当前集合中。

    boolean removeAll(Collection c):删除当前集合中与给定集合的公有元素。

    boolean containsAll(Collection c):判断当前集合是否包含给定集合中的所有元素。

    1. import java.util.ArrayList;
    2. import java.util.Collection;
    3. import java.util.HashSet;
    4. /**
    5. * 集合间的操作
    6. */
    7. public class CollectionDemo4 {
    8.    public static void main(String[] args) {
    9. //       Collection c1 = new ArrayList();
    10.        Collection c1 = new HashSet();//不可重复元素
    11.        c1.add("java");
    12.        c1.add("c");
    13.        c1.add("c++");
    14.        System.out.println("c1:"+c1);
    15.        Collection c2 = new ArrayList();
    16.        c2.add("android");
    17.        c2.add("ios");
    18.        c2.add("java");
    19.        System.out.println("c2:"+c2);
    20.         /*
    21.            boolean addAll(Collection c)
    22.            将给定集合中的所有元素添加到当前集合中。当前集合若发生了改变则返回true
    23.         */
    24.        boolean tf = c1.addAll(c2);
    25.        System.out.println(tf);
    26.        System.out.println("c1:"+c1);
    27.        System.out.println("c2:"+c2);
    28.        Collection c3 = new ArrayList();
    29.        c3.add("ios");
    30.        c3.add("c++");
    31.        c3.add("php");
    32.        System.out.println("c3:"+c3);
    33.        /*
    34.            boolean containsAll(Collection c)
    35.            判断当前集合是否包含给定集合中的所有元素
    36.         */
    37.        boolean contains = c1.containsAll(c3);
    38.        System.out.println("包含所有元素:"+contains);
    39.        /*
    40.            boolean removeAll(Collection c)
    41.            删除当前集合中与给定集合中的共有元素
    42.         */
    43.        c1.removeAll(c3);
    44.        System.out.println("c1:"+c1);
    45.        System.out.println("c3:"+c3);
    46.   }
    47. }

    Iterator iterator():获取用于遍历当前集合的迭代器

    T[] toArray(T[] t):将当前集合转换为一个数组。参数为要转换的数组。

     

    迭代器

    java.util.Iterator

    迭代器用于遍历集合,不同的集合都提供了一个用于遍历自身元素的迭代器实现类。

    使用迭代器遍历集合遵循的过程为:问->取->删。其中删除不是必要操作。

    常用方法

    boolean hasNext():判断集合是否还有"下一个"元素可以遍历

    E next():获取集合下一个元素

    void remove():从集合中删除迭代器当前位置的元素(通过next获取的元素)

    1. import java.util.ArrayList;
    2. import java.util.Collection;
    3. import java.util.Iterator;
    4. public class IteratorDemo {
    5.    public static void main(String[] args) {
    6.        Collection c = new ArrayList();
    7.        c.add("one");
    8.        c.add("two");
    9.        c.add("three");
    10.        c.add("four");
    11.        c.add("five");
    12.        System.out.println(c);
    13.        //获取迭代器
    14.        Iterator it = c.iterator();
    15.        /*
    16.            迭代器提供的相关方法:
    17.            boolean hasNext()
    18.            判断集合是否还有元素可以遍历
    19.            E next()
    20.            获取集合下一个元素(第一次调用时就是获取第一个元素,以此类推)
    21.         */
    22.        while(it.hasNext()){
    23.            String str = (String)it.next();
    24.            System.out.println(str);        
    25.       }
    26.        System.out.println(c);
    27.   }
    28. }

     

    集合转换为数组的操作

    集合转换为数组,使用集合的toArray方法即可。 数组转换为集合,只能转换为List集合,使用的是Arrays.asList()方法。

    1. import java.util.ArrayList;
    2. import java.util.Arrays;
    3. import java.util.List;
    4. /**
    5. * 集合转换为数组
    6. * Collection提供了方法toArray可以将当前集合转换为一个数组
    7. */
    8. public class CollectionToArrayDemo {
    9.    public static void main(String[] args) {
    10.        List list = new ArrayList<>();
    11.        list.add("one");
    12.        list.add("two");
    13.        list.add("three");
    14.        list.add("four");
    15.        list.add("five");
    16.        System.out.println(list);
    17.        String[] array = list.toArray(new String[list.size()]);
    18.        System.out.println(array.length);
    19.        System.out.println(Arrays.toString(array));
    20.   }
    21. }

     

    1. import java.util.*;
    2. /**
    3. * 数组转换为集合
    4. * 数组的工具类java.util.Arrays提供了一个静态方法:asList
    5. * 该方法可以将一个数组转换为一个List集合
    6. */
    7. public class ArrayToListDemo {
    8.    public static void main(String[] args) {
    9.        String[] array = {"one","two","three","four","five"};
    10.        System.out.println("array:"+ Arrays.toString(array));
    11.        //asList方法会返回Arrays定义的内部类ArrayList,该集合内部直接引用给定数组array
    12.        List list = Arrays.asList(array);
    13.        System.out.println("list:"+list);
    14.        //因为集合直接引用数组array,所以对该集合操作就是对array数组的操作
    15.        list.set(1,"six");
    16.        System.out.println("list:"+list);
    17.        System.out.println("array:"+ Arrays.toString(array));
    18.        //对数组操作后,集合也会改到改变.
    19.        array[2] = "seven";
    20.        System.out.println("array:"+ Arrays.toString(array));
    21.        System.out.println("list:"+list);
    22. //       list.add("!!!!!");
    23.        /*
    24.            如果我们需要增删元素,可另行创建一个集合同时包含该集合元素即可.
    25.         */
    26.        List list2 = new ArrayList<>(list);//等同于先new再addAll()
    27. //       Set set = new HashSet<>(list);//等同于先new再addAll()
    28.        System.out.println("list2:"+list2);
    29.        list2.add("!!!!");
    30.        System.out.println("list2:"+list2);
    31.   }
    32. }

  • 相关阅读:
    某省大学排名网络爬虫应该怎么做
    【Pytorch深度学习实战】(7)深度残差网络(DRN)
    vue项目页面空白但不报错产生的原因分析
    ✔ ★【备战实习(面经+项目+算法)】 10.16学习时间表(总计学习时间:5h)
    Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
    Android 弹幕功能实现
    python+selenium自动化测试项目实战
    Java基础知识篇
    docker私有仓库registry
    wsl安装ubuntu的问题点、处理及连接
  • 原文地址:https://blog.csdn.net/m0_51041464/article/details/126253443