标签:style blog http io 使用 ar java 数据 sp
集合与数组都是容器,而它们的最大区别在于:
由于这样的特点,某些场景下集合比数组更适合存储对象。在内存中,数组和集合中存放的都是对象的地址。JAVA的集合框架下有很多容器,不同的容器的数据组织方式和存储方式不同,即不同的数据结构。集合框架的构成关系图如下所示:
集合框架下很多容器的方法都是相同的,下面从collection接口向下介绍集合的方法。
共性方法
迭代器是取出集合中元素的方法,以内部类的形式定义在集合类的内部,这样取出方式就能直接访问集合中的元素。由于不同的集合容器数据结构不同,所以取出元素的操作也不同,但是都包括取出元素和判断内容等共性操作。方法iterator()返回对应集合的的迭代器对象Iterator,iterator对象有hasNext(),next() ,remove()
collection接口有两个子接口:list和set。list中元素可以重复且元素有序(带有索引),set中元素无序且不可以重复。
除了上面提到的集合的共有方法,list还有一些特有的方法。由于list带有索引,所以操作索引的方法都是list的特有方法。
列表迭代器ListIterator继承了Iterator接口,因为在迭代集合元素时,不能使用集合对象的方法来操作集合元素,所以只能用迭代器的方法来操作集合,Iterator中方法太少,只能通过子接口ListIterator中的方法来操作集合中元素。
ListIterator中常见的方法有add(elem); set(elem); hasPrevious(); nextIndex(); previous(); previousIndex();
特有方法:addFirst(elem); addLast(elem); removeFirst(); removeLast(); getFirst(); getLast(); 1.6之后出现offerFirst(elem); offerLast(elem); pollFist(); pollLast()
Vector数组数据结构,与ArrayList相同,老版本容器,线程同步。枚举是vector的迭代方式,与iterator对象方法相似。
Set 中元素不重复,功能操作与collection接口一致。
常见的子类包括
当两种方法都存在的时候,以比较器为主。
?
1.5版本之后出现,是一种安全机制。将运行时抛出的类型转换异常,转移到编译时出现,避免了强制类型转换。通常在集合框架中很常见。当类型中所操作的数据类型不确定时,早期定义object类来扩展,现在定义泛型来扩展。
泛型可以定义在类,方法以及接口上,对于类中的静态方法,无法访问类上定义的泛型,因为泛型的类型在对象初始化时才确定,而静态方法在类创建时已经存在。如果静态方法的类型不确定,可以将泛型定义在方法上。
?为通配符,<? extends E>可以接收E类型或者E的子类;<? super E>可以接收E类型或者E的父类。
?
将键K映射到值V的对象,Map中的键不能重复,每个键K只对应唯一的值V。
通用方法:
?
将map中的所有键都存入set集合并返回。
将映射关系存入了集合,而Entry是Map接口中的一个内部接口,
Map<K,V>接口有两个常见子类的实现:
底层数据结构是hash表,允许使用null值和null键,是不同步的
底层数据结构是二叉排序树,根据键排序。
标签:style blog http io 使用 ar java 数据 sp
原文地址:http://www.cnblogs.com/cqumonk/p/3995552.html