Collection

本文详细介绍了Java集合框架中的主要接口和实现类,包括List、Set等,并对比了不同实现类的特点,如ArrayList与LinkedList的区别。此外,还通过实例演示了集合操作的方法。
Collection树形图
Collection 接口
        |--List 接口,继承Collection 
            |--ArrayList                           --- implement  List 
            |--Vector                              --- implement  List 
            |--LinkedList                          --- implement  List 
        |--Set 接口,继承Collection 
            |--HashSet                             --- implement  Set 
               |--linkedHashSet 继承HashSet 
            |--TreeSet                             --- implement  Set 

Collection
    |--List 有序,可重复
        |--ArrayList
            底层数据结构是数组,查询快,增删慢。
            线程不安全,效率高
        |--Vector
            底层数据结构是数组,查询快,增删慢。
            线程安全,效率低
        |--LinkedList
            底层数据结构是链表,查询慢,增删快。
            线程不安全,效率高
    |--Set  无序,唯一
        |--HashSet
            底层数据结构是哈希表。
            元素唯一性的保证
                依赖两个方法:添加的对象要重写hashCode()和equals()
            |--LinkedHashSet
                底层数据结构是链表和哈希表
                由链表保证元素有序
                由哈希表保证元素唯一
        |--TreeSet
            底层数据结构是红黑树。
            保证元素排序的保证
                自然排序
                比较器排序
            保证元素唯一性的保证
                根据比较的返回值是否是0来决定

常用方法:

1:添加功能

  • boolean add(Object obj):添加一个元素
  • boolean addAll(Collection c):添加一个集合的元素
    2:删除功能
  • void clear():移除所有元素
  • boolean remove(Object o):移除一个元素
  • boolean removeAll(Collection c):移除多个在集合c中给定的元素,只要有一个元素被移除了,就返回true。
    3:判断功能
  • boolean contains(Object o):判断集合中是否包含指定的元素
  • boolean containsAll(Collection c):如果此 collection 包含指定 collection 中的所有元素,则返回 true,少了一个都返回false
  • boolean isEmpty():判断集合是否为空
    4:获取功能
  • Iterator iterator
    5:长度功能
  • int size():元素的个数
    6:交集功能
  • boolean retainAll(Collection c): 假设有两个集合A,B。 A对B做交集,最终的结果保存在A中,B不变。 返回值表示的是A是否发生过改变。
    7:把集合转换为数组
  • Object[] toArray()


    // 创建集合1
    Collection c1 = new ArrayList();
    c1.add("a1");
    c1.add("a2");
    c1.add("a3");
    c1.add("a4");
    // 创建集合2
    Collection c2 = new ArrayList();
    c2.add("b1");
    c2.add("b2");
    c2.add("b3");
    c2.add("b4");
    System.out.println("c1:" + c1);
    System.out.println("c2:" + c2);
    System.out.println("--------------");

    c1.addAll(c2);
    System.out.println("c1:" + c1);
    System.out.println("c2:" + c2);
    System.out.println("--------------");

    System.out.println(c1.remove("b4"));
    System.out.println("c1:" + c1);
    System.out.println("c2:" + c2);
    System.out.println("--------------");

    System.out.println(c1.removeAll(c2));
    System.out.println("c1:" + c1);
    System.out.println("c2:" + c2);
    System.out.println("--------------");


    System.out.println(c1.contains("a2"));
    System.out.println(c1.containsAll(c2));
    System.out.println("--------------");

    System.out.println(c1.isEmpty());
    System.out.println(c1.size());
    System.out.println("--------------");

    System.out.println("c1:" + c1);
    System.out.println("c2:" + c2);
    c1.add("b1");
    boolean retainAll = c2.retainAll(c1);
    System.out.println(retainAll);
    System.out.println("c1:" + c1);
    System.out.println("c2:" + c2);
    System.out.println("--------------");

    for(Iterator it=c1.iterator();it.hasNext();){
        System.out.print(it.next()+"  ");
    }
    System.out.println();
    System.out.println("--------------");
    Object[] arr=c1.toArray();
    for(int x=0;x<arr.length;x++){
        System.out.print(arr[x]+"  ");
    }

}
输出:
c1:[a1, a2, a3, a4]
c2:[b1, b2, b3, b4]
--------------
c1:[a1, a2, a3, a4, b1, b2, b3, b4]
c2:[b1, b2, b3, b4]
--------------
true
c1:[a1, a2, a3, a4, b1, b2, b3]
c2:[b1, b2, b3, b4]
--------------
true
c1:[a1, a2, a3, a4]
c2:[b1, b2, b3, b4]
--------------
true
false
--------------
false
4
--------------
c1:[a1, a2, a3, a4]
c2:[b1, b2, b3, b4]
true
c1:[a1, a2, a3, a4, b1]
c2:[b1]
--------------
a1  a2  a3  a4  b1  
--------------
a1  a2  a3  a4  b1  

转载于:https://www.cnblogs.com/feiZhou/p/9344487.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值