Java日记:集合
2018-11-12 06:54:23来源:博客园 阅读 ()
1. 总体结构
Java的集合类主要由:Collection和Map两个根接口派生而来。总体结构分别如下:
- Collection接口
- Map接口
2. Collection和Iterator接口
- 包含了通用的集合编辑方法:add,remove,addAll,removeAll,iterator, retainAll,size等;
1 Collection collection=new ArrayList();
2 collection.add("element 1");
3 collection.add("element 2");
4 // 使用Lambda表达式遍历集合
5 collection.forEach(obj->System.out.println(obj.toString()));
6 // Iterator遍历集合
7 Iterator iterator=collection.iterator();
8 while(iterator.hasNext()) {
9 System.out.println(iterator.next().toString());
10 }
11 // Lambda表达式遍历iterator
12 iterator.forEachRemaining(obj->System.out.println(obj.toString()));
13 // foreach循环遍历集合元素
14 for(Object obj:collection) {
15 System.out.println(obj.toString());
16 }
17
18 // Predicate操作集合,是函数式接口
19 collection.removeIf(obj->obj.toString().length()>10);
20 // Stream操作集合
21 IntStream intStream = IntStream.builder().add(20).add(10).build();
22 System.out.println(intStream.max());
3. Set集合
- 原则:不允许包含重复的元素。
- HashSet:通过hashCode()决定存储位置,需要确保元素hashCode相同时equals方法也返回true。
- LinkedHashSet:HashSet基础上增加了链表,具有较好的插入性能;
- TreeSet:通过红黑树对元素排序,需要确保元素CompareTo和equals方法结果一致。可自行定义比较方式;
- EnumSet:位向量格式存储,高效,元素按照枚举定义顺序排序,但是只能存储枚举值;
4. List集合
- 是有序集合,实现List接口和ListIterator接口;
- ArrayList:基于数组实现的List,初始容量为10个,线程不安全;
- Vector:基于数组实现的List,线程安全,已过期,不建议使用;
- Stack:栈,Vector子类,peek,pop,push三个基本方法构成,不就建议使用;
- 固定长度的List:其实是Arrays.ArrayList类的对象,是固定长度的,不可修改;
5. Queue集合
- 队列原则:先进先出
- PriorityQueue:通过Comparator接口排序的队列,每次取得的元素为比较后的最小值;
- Deque->ArrayDeque:数组实现的双端队列;
- Deque->LinkedList:链表实现的双端队列;
6. Java8增强的Map集合
- Set是所有value为null的特殊Map,所以Set接口和Map类似;
1 Map map=new HashMap();
2 map.put("xxx", 109);
3 // 替换指定key对应的value值
4 map.replace("xxx", 666);
5 // 使用当前value和传入参数重新计算value
6 map.merge("xxx", 666, (oldVal, param)->(Integer)oldVal+(Integer)param);
- HashMap:key不可重复,最多可以有一个null,hashCode与equals方法结果必须一致;value只要通过equals比较相等就认为是相等的。
- Hashtable:是线程安全的。不建议使用;
- LinkedHashMap:使用双向链表维护key-value顺序,与插入顺序保持一致;
- Properties:是Hashtable子类,是线程安全的,维护key-value对;
- SortedMap->TreeMap:红黑树结构排序的map, compareTo和equals方法结果需要保持一致;
- WeakHashMap:对于元素是弱引用的,如果元素没有其他地方引用,则GC后会从map中删除;
- IdentityHashMap:与HashMap一致,但是比较key值采用==而不是equals方法;
- EnumMap:key值只能是同一类型的enum值,根据枚举值定义顺讯存储;
7. HashSet和HashMap性能
- 当hashCode相同而equals为false时,value值通过链表形式存储在同一个位置上,称为‘桶’;
- ‘桶’的出现会降低集合的性能;
8. 操作集合的工具类:Collections
- 排序操作:reverse,shuffle,sort,swap,rotate;
- 查找替换:binarySearch,frequency,indexofsublist等;
- 同步控制:
List list=Collections.synchronizedList(new ArrayList());
Set set=Collections.synchronizedSet(new HashSet());
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash