java 集合框架
来源:互联网 发布:如何开网店淘宝店货源 编辑:程序博客网 时间:2024/05/19 16:32
java集合框架:
顶层接口Collection和Map接口,Java SDK不提供直接继承自Collection的类,提供的类都是继承自Collection的“子接口”如List和Set。不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
迭代器是 故障快速修复(fail-fast)的。这意味着,当另一个线程修改底层集合的时候,如果您正在用 Iterator 遍历集合,那么,Iterator就会抛出ConcurrentModificationException (另一种 RuntimeException异常)异常并立刻失败
集合接口实现关系
java主要使用的实现类,下面以这几种实现描述
图1.
1.继承了Collection的list子类接口的集合类型
List 接口继承了 Collection 接口以定义一个允许重复项的有序集合
1.1.LinkedList
List linkedList =new LinkedList();
底层使用链表存储,适用于频繁的从列表的中间位置添加和除去元素,重写了collection的iterator方法,支持插入双向遍历List,ListIterator listIterator() : 返回一个列表迭代器,可用来访问列表中的元素。
1.2.ArrayList
List arrayList=new ArrayList();
底层实现:动态数组,支持随机访问,而不必在除尾部的任何位置插入或除去元素,ArrayList类封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个capacity。
这个capacity表示存储列表中元素的数组的容量。当元素添加到ArrayList时,它的capacity在常量时间内自动增加。
1.3.Vector-stack
继承了Collection的set子类的集合类型
Set接口是collection接口的一个子接口,不包含重复的元素,即Set中不存两个这样的元素e1和e2,使得e1.equals(e2)为true,object的equals方法比较地址(String重写的equals方法比较字符串内容)。Set 接口继承 Collection 接口,而且它不允许集合中存在重复项。所有原始方法都是现成的,没有引入新方法。具体的Set 实现类依赖添加的对象的 equals()方法来检查等同性。
1.hashset--LinkedHashSet
以哈希表形式存放,插入删除快
2.sortedSet---Treeset-树形存储
treeset实现了sortedSet接口,可对元素按指定比较器排序,重写比较器内部类
使用示例:
图2.TreeSet指定比较器排序
继承了Map接口的集合(提供了映射关系)
1.hashmap
顺序遍历键,元素无序,适合在Map
中插入、删除和定位元素,hashmap非同步的:多个线程可以同时操作,性能较高,如果要设置成同步可使用Map m = Collections.synchronizedMap(hashMap),允许空值做key-value,如果对hashmap进行排序
可以借助treeMap的排序器实现,如图。
图3.hashmap借助treemap排序
可以借助list和map.entityset排序
图4.借助list比较器排序
2.hashtable-LinkedHashMap
扩展HashMap,以插入顺序将关键字/值对添加进链接哈希映像中,hashtable同步的:一个时间点只能有一个线程可以修改哈希表的
3.sortedMap-treemap,适合对元素进行排序
按key排序:
图5.按key排序
按value排序:
图6.按value排序
- Java集合:集合框架
- 【Java】java集合框架
- [Java]Java集合框架
- JAVA集合框架和集合
- 【集合】Java集合框架介绍
- Java集合之集合框架
- [集合]Java的集合框架 Collection集合
- Java集合框架 (一)
- Java集合框架 (二)
- Java集合框架(三)
- Java集合框架
- 也来谈Java集合框架
- 也来谈Java集合框架
- Java集合框架 (一)
- Java集合框架
- 也来谈Java集合框架
- java集合框架
- Java集合框架总结
- 360浏览器,打开一个,为什么后台有多个360进程?
- 背包问题
- osx常用技巧
- Java并发编程实战(学习笔记十五 第十六章 Java内存模型(JMM))
- mac下安装php7
- java 集合框架
- QML改变TextInput或者其它输入框光标颜色
- JAVA键盘输入数据的两种方法
- python入门(三十六):threading模块
- flex布局之手机输入法弹框遮盖问题
- Java面试宝典2015版(绝对值得收藏超长版)(一)
- Hololens开发(2)
- CAD文件怎么转高清图片
- Python笔记(五)--变量类型之列表