JavaSE 第七章集合 Collection

本文详细介绍了Java集合框架中的Collection接口,包括Iterable接口、List接口及其子类ArrayList、Vector、LinkedList和Stack,Set接口及其子类HashSet、TreeSet和LinkedHashSet。此外,还讲解了Map接口的HashMap、TreeMap、LinkedHashMap和Hashtable,以及Collections工具类的相关方法和特性。
摘要由CSDN通过智能技术生成

第七章集合Collection

在这里插入图片描述

7.1 Iterable 接口

首先是集合Collection的的爸爸,列表List的爷爷 Iterable接口。

实现此接口的类队形可以成为for-each循环的目标,也就是增强for循环,它是java中的一种语法糖。

List<Object> lists = new ArrayList<>();
for(Object obj : lists){
       }

jdk1.8之前集合的遍历只有Iteractor这一个方法 ,实现该次接口的方法能够创建一个轻量级的迭代器。用于安全的遍历元素,移除元素,添加元素。

总之就是能创建迭代器进行元素的添加和删除的话,就尽量使用迭代器。

也可以使用迭代器的方式进行遍历。

for (Iterator<Object> it = Collections.emptyIterator();it.hasNext();){
   
     System.out.println(it.next());
}

7.2 Collection 接口

Collection是一个顶级接口,用来定义集合的约定。

List 也是一个顶级接口,它继承了Collection接口,同时也是ArrayList、LinkedList等集合元素的父类。

Set接口位于List接口的同一层次,它也继承了Collection接口。Set接口提供了额外的规定,它对add、equals、hashcode方法提供了额外的标准。

Quene是和Set、List接口并列的Collection的三大接口之一。Quene的设计是用来保持元素的访问顺序。除了Collection接口提供的基础操作外,队列还提供了额外的插入、读取、检查操作。

public static void main(String[] args) {
   

        Collection c = new ArrayList();
        Collection c1 = new ArrayList();
        c1.add("c1");
        c1.add("c111");
        //增加
        c.add(1);
        c.add(2);
        c.add("s");
        c.add(true);
        //把另一个集合中的元素添加进来
        c.addAll(c1);
        System.out.println(c);

        //通过值来移除元素
        c.remove("c1");
        System.out.println("c = " + c);

        //是否有交集
        System.out.println(c.contains("c111"));

        //是否包含c1集合的全部元素
        c.add("c1");
        System.out.println(c.containsAll(c1));

        //从此集合中删除指定集合中不包含的所有元素。
        System.out.println(c.retainAll(c1));
        System.out.println("c = " + c);
    }
7.2.1 List<> 接口
ArrayList

ArrayList是实现了List接口的可扩容数组(动态数组,负载因子0.5)它的内部是基于数组实现的。

public class ArrayList<E>
    	extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
  • ArrayList可以实现所有可选择的列表操作,允许所有的元素,包括空值。ArrayList还提供了内部存储list的方法,它能够完全替代Vector。

  • 只有一个例外,ArrayList不是线程安全的容器。如果多个线程中至少有两个线程修改了ArrayList的结构的话,就会导致线程安全问题。

  • 作为替代可以使用线程安全的List —— Collections.synchronizedList

  • ArrayList有一个容量的概念,这个数组的容量就是List用来存储元素的容量。

    List list = Collections.synchronizedList(new ArrayList(...));
    
  • ArrayList具有快速失败机制fail-fast,能够对ArrayList进行失败检测。当迭代过程中该集合在结构上发生变化时,就有可能会发生fail-fast,即抛出ConcurrentModificationException异常

常用方法

更多详细请去查阅Api文档

public class ArrayListDemo {
   

    public ArrayListDemo(<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值