您的位置:首页 > 编程语言 > Java开发

Java——集合

2015-08-19 20:17 375 查看
Collection:

1、List:元素是有序的,元素可以重复。因为该集合体系有索引。

ArrayList:底层数据存储方式采用数组结构。特点:查询修改速度快,添加删除速度慢。

LinkedList:底层数据存储方式采用链表结构。特点:增删速度快,查询很慢。

特有方法:addFirst() addLast() getFirst() getLast() removeFirst() removeLast()

Vector:底层是数组数据结构,线程同步。

List集合判断元素是否相同,依据的是元素的equals方法。

2、Set:元素是无序,元素不可以重复。

HashSet:底层数据结构是哈希表。

HashSet是通过元素的两个方法,hashCode()和equals()来完成。如果元素的HashCode值相同,就判断equals是否为true,如果元素的HashCode值不同,不会调用equals();

TreeSet:可以对Set集合中的元素进行排序。底层数据结构是二叉树,保证元素唯一性的依据:compareTo 方法的返回值。

TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现Comparable接口,重写compareTo方法。

TreeSet排序的第一种方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性,让集合初始化时,就具备了比较方式:定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。

当两种排序都存在时,以比较器为主。

定义一个类,实现Comparator接口,覆盖compare方法。

3、Map:每一个元素包含一对键对象和值对象,并且要保证键的唯一性。

Hashtable:底层是哈希表结构,不可以存入null键null值,线程同步。

HashMap:底层是哈希表结构,允许null键和null值,线程不同步。

TreeMap:底层是二叉树结构,线程不同步,可以用于给map集合中的键进行排序。

添加:put(),添加元素时,如果出现相同的键,那么后添加的值会覆盖原有的键对应值。并且put方法会返回被覆盖的值。

map集合的两种取出方式:

1,keySet:将map中所有的键存入到Set集合,因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法,获取每一个键对应的值。

2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是Map.Entry

一、List

特有方法。凡是可以操作角标的方法都是该体系特有的方法。

1、增

add(index,element);

addAll(index,Collection);

2、删

remove(index);

3、改

set(index,element);

4、查

get(index);

subList(from,to);

listIterator(); ListIterator是Iterator的子接口,在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所以,在迭代器中,只能对元素进行判断,取出,删除的操作。如果想要其他的操作,如添加、修改等,就需要使用其子接口,ListIterator.该接口只能通过List集合的listIterator方法获取。

二、泛型

JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制。

通常在集合框架中很常见,<>就是用来接收类型的。当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

泛型类定义的泛型,在整个类中有效。泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了,为了让不同方法可以操作不同类型,而且类型还不确定,可以将泛型定义在方法上。

特殊的是,静态方法不可以访问同类上定义的泛型,如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

?——通配符,也可以理解为占位符。

泛型的限定:

? extends E:可以接收E类类型或者E的子类型。

? super E:可以接收E类型或者E的父类型。

三、集合框架的工具类

Collections:sort() max() binarySearch() reverse() reverseOrder() swap() shuffle() Arrays

asList():将数组变成list集合,从而可以使用集合的思想和方法来操作数组中的元素。但是不可以使用集合的增删方法。因为数组的长度是固定的。如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。如果数组中的元素都是基本数据类型,俺么会将该数组作为集合中的元素存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: