java面试必备之集合类

                                      集合相关

   1、基本概述

      Java.util包提供了一些集合类,这些集合类又被成为容器。集合和数组的区别在于集合的长度是可变的,数组的长度固定;集合用来存放对象的引用。常用集合有ListSetMap,集合类继承关系如图1java提供了相应的方法来对集合进行遍历、增删改查。

 

                                图1

 2、主要操作

1Collection接口(Collections是工具类用于操作集合类):

     Collection接口是层次结构中的根接口,通常不能直接使用。由于ListSet集合继承了Collection接口,因此Collection提供的方法对其是通用的。Collection常见方法如图2所示。

 

遍历集合一般有3种方法:

第一种---使用迭代器(Iterator),该方式在执行循环过程中会进行数据锁定,性能稍差。在遍历过程中删除元素只能用迭代器的remove方法而不能用集合的remove方法,否则会出现并发访问的错误。Iteratornext()方法返回的是Object,注意强制转换。

第二种--增强型for循环,内部实现也是用的迭代器。

第三种--普通的for循环,内部不锁定,效率高,多线程时要考虑并发问题。

(2)List集合

        List集合包括List接口及其实现类。List集合中的元素允许重复且有序。List接口除了包含Collection中的方法外,List接口还定义了2个非常重要的方法:

get(int index):获取指定索引位置的元素.

set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象。

List接口的常用实现类有ArrayListLinkedList.

ArrayList类实现了可变的数组,允许保存所有元素,包括null。可根据索引位置对集合进行快速访问,缺点是向指定索引位置插入或删除对象的速度较慢。线程不同步

LinkedList类采用链表结构保存对象,保存所有元素。这种结构的优点是便于向集合中插入和删除对象,但随机访问集合中的对象效率比ArrayList低。(集合为空表示没有元素,为null表示对象不存在)

Vector:(JDK1.0版本出现的) 底层是数组数据结构,线程同步,被ArrayList替代了.(已经不用了)

 3Set集合

Set集合包括Set接口及其实现类。Set集合不可重复且无序。常用的实现类有HashSetTreeSet

HashSet实现了Set接口由哈希表支持,允许使用null元素。

TreeSet不仅实现了Set还实现了java.util.SortedSet接口。因此TreeSet按照自然顺序递增排序,当然也可以按照指定的比较器排序。

(4)Map集合

Map集合以键值对的形式存储数据,不能包含相同的Key,每个Key只能映射一个Value

遍历map集合的三种方法:

通过Map.entrySet遍历key和value;

通过Map.keySet遍历key;

通过Map.values遍历value

集合有序重复见图3

 

猜你喜欢

转载自1124442644.iteye.com/blog/2322156