集合

来源:互联网 发布:linux shell面试题 编辑:程序博客网 时间:2024/06/05 20:48

一、 List接口

    元素有序,可重复。主要三种:ArrayList、LinkedList、Vector

这三种都是List接口的实现类,使用上完全一样,只是实现原理不同,效率不同。

ArrayList

1)底层数组实现

2)查找快,增删慢

3)线程不安全,效率高

 

LinkedList

1)底层链表实现

2)增删快,查找慢

 

Vector

1)与ArrayList基本一样

2)线程安全(线程同步),效率低


 二、Set接口

Set集合无序,不允许有重复元素,集合通过存入对象的equals方法来保证集合中没有重复元素。

HashSet

1)HashSet是Set的实现类,因此也没有重复元素

2)底层使用哈希算法保证没有重复元素

 

TreeSet

1)TreeSet集合通过二叉树算法保证无重复元素,并对元素进行排序

2)在使用TreeSet时必须指定比较的算法,指定的方式有两种:

   自然顺序:将要存储的类实现Comparable接口,重写compareTo方法,    

在方法中指定算法

   比较器顺序:在创建TreeSet时,传入一个比较器Comparator,在比较

器的compare方法中指定算法

 

三、 Map接口

    1)一组成对的”键值对”对象,允许根据键来查找值

    2)Map集合的""不允许有重复,值可以有重复,所以Map的所有键构成了一个Set集合

    3)可以通过键获得值,反之则不能

    4)Map集合存储元素使用put(key,value)方法


HashMap

1)线程不安全,存取速度快,允许存放null键,null值。

2)通过HashSet原理保证键唯一性

 

Hashtable:

线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。

 

TreeMap

1)通过二叉树算法保证键唯一性

2)对键进行排序,排序原理与TreeSet相同。





四、泛型

1)由于集合可以存储不同类型的数据,所以取元素时有可能会导致类型转换错误

2)JDK1.5增加了新特性泛型,为了减少操作集合时出错的几率

3)集合一旦声明了泛型,便只能存储同一类型的对象了

 

五、Collections工具类

1)工具类,提供了对集合的常用操作

2)对集合进行查找

3)取出集合中的最大值,最小值

4)对List集合进行排序

 

六、Arrays工具类

1)工具类,提供了对数组的常用操作

2)将数组转成List集合

3)对数组进行排序

4)对数组进行二分查找

5)将数组转为字符串显示形式
原创粉丝点击