列式出 List / Map / Collections

Collection是java最基本的接口,一个Collection代表一组Object。JDK不直接提供Collection的接口,而是提供继承自Collection的子接口 如List、Set。
有些Collection支持排序,有些不支持;有些可以允许元素相同,有些则不允许。
不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
    Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一个元素
    }
  由Collection接口派生的两个接口是List和Set。
2.1 List接口

       List是有序的Collection,允许有相同元素。
       实现List接口的常用类有LinkedList、ArrayList、Vector和Stack。
  2.1.1 LinkedList类

             LinkedList实现了List接口,允许null元素。LinkedList提供额外的get、remove、insert方法在LinkedList的首部和尾部,这些操作可以使LinkedList可被用作堆栈、队列或双向队列。
         无同步、多线程访问需要自己同步。一种解决方法是在创建List时构造一个同步的List:List list = Collections.synchronizedList(new LinkedList(...));
  2.1.2 ArrayList类

   ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
  2.1.3 Vector类

     Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和 ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使                  用,另一个线程改变了 Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。
        2.1.3.1Stack 类

   Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop 方法,还有peek方法得到栈顶的元素,empty方法测试堆栈 是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
2.1.4Set接口

  Set是一种不包含重复的元素的Collection,Set最多有一个null元素。很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
  请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。
3、Map接口

   Map没有继承Collection接口。一个Map中不能包含相同的key。
Map.Entry 接口
Map 的 entrySet() 方法返回一个实现Map.Entry 接口的对象集合。集合中每个对象都是底层 Map 中一个特定的键-值对。
通过这个集合迭代,您可以获得每一条目的键或值并对值进行更改。但是,如果底层 Map 在Map.Entry 接口的setValue() 方法外部被修改,此 条目集就会变得无效,并导致迭代器行 为未定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值