JAVASE--集合

集合(Collection接口)

框架:一这类,这些类协同完成某些功能

集合中的某个类


1)非键值对集合

Set:无序的、不可重复的,访问方式只能用迭代器(iterator()迭代器是一次性用品)

HashSet:底层是用数组实现的,线程不安全的,轻量级的,

排重方式与equals和hashCode有关(默认地址排重)

自定义排重方式,必须重写所用类型的equals和hashCode方法

先调用hashCode方法,返回hashCode值相同,再调用equals方法

(在服务器上即大于4G内存,两个不同的地址在hash算法可以得到相同的hashCode,

所以还得再调用equals方法)

/**

Set e = new HashSet();

e.add(1);//这里的1为基本数据类型,自动封箱成Integer类型对象

e.add("abc");

e.add("def");

e.add("def");//排重

//访问方式

Iteratro it = e.iterator();

while(it.hasNext()){

Object o = it.next();

//Integer i = (Integer)it.next();

//报错,强转必须是强转成数据类型的共同父类

}//迭代器指针到达集合末端

**/


equals方法决定了元素是否可以存入Set中(自定义一般需要重写equals方法) 哈希(杂凑函数,算法--取模,减少冲突;装载因子--0.75) TreeSet:使用于经常需要排序输出的数据结构选择 (自定义类需要实现Comparable接口,重写compartTo方法,自定义排序算法)

List:没有排重功能,没有排序功能,凭下标存取,可重复;new出的实例对象默认长度为10,不限制长度

add(int index,Object object);添加到指定的下标

set(int index,Object object);将指定的下标位置进行修改

实现的机制为数组,适合于查询操作比较多的数据结构选取

ArrayList:不适合于多线程操作,线程不安全,效率高

Vector:多线程安全,效率低

LikedList:实现机制链表,适合于插入删除操作比较多的数据结构选取


2)键值对集合


Map<key,value>:key唯一,value可以出现重复

**key相同是,后一个value覆盖前一个的value

**一个Map有三张视图:

entrySet(包含所有键值对的关系映射)

keySet(生成key集的Set视图)

Collection(value值的集合)

HashMap:不适合于多线程操作,线程不安全的,效率高,方便快速查找

Hashtable:多线程安全,效率低

TreeMap:有序的(默认是以KEY值进行的升序排列)

put元素时,自动调用comparableTo方法,进行比较然后插入

你可能感兴趣的:(JavaSE)