集合类(Collection和Map接口)简介
集合分为Collection和Map,详细分类如下图所示:


以下是测试验证代码:
//HashSet,无序(存取不一致)、去重
Set set_H = new HashSet();
set_H.add(8);
set_H.add(3);
set_H.add("Hello");
set_H.add(5);
set_H.add(5);
System.out.println(set_H); 输出结果:[3, Hello, 5, 8]
//LinkedHashSet能保证怎么存就怎么取的集合对象 ,有序(存取一致)、去重
Set set_L = new LinkedHashSet();
set_L.add(8);
set_L.add(3);
set_L.add("Hello");
set_L.add(5);
set_L.add(5);
System.out.println(set_L); 输出结果:[8, 3, Hello, 5]
//TreeSet 能够对集合中对象进行排序,无序(存取不一致)、去重
//排序规则:根据ASCII表大小升序排序
//只能对存储同一种类型的数据才能排序
Set set_T = new TreeSet();
set_T.add("wo");
set_T.add("ai");
set_T.add("study");
set_T.add("java");
set_T.add("java");
System.out.println(set_T); 输出结果:[ai, java, study, wo]
//ArrayList,有序(存取一致)、不去重
//查询快,增删慢
List list_A = new ArrayList();
list_A.add(8);
list_A.add(3);
list_A.add(1);
list_A.add("hello");
list_A.add("world");
list_A.add("world");
System.out.println(list_A); 输出结果:[8, 3, 1, hello, world, world]
//LinkedList,有序(存取一致)、不去重
//查询慢,增删快
List list_L = new ArrayList();
list_L.add(8);
list_L.add(3);
list_L.add(1);
list_L.add("hello");
list_L.add("world");
list_L.add("world");
System.out.println(list_A); 输出结果:[8, 3, 1, hello, world, world]
//HashMap,键无序(存取不一致)、在Map 中插入、删除和定位元素,HashMap 是最好的选择
Map map_H = new HashMap();
map_H.put(452,"张三");
map_H.put(285,"李四");
map_H.put(689,"王五");
map_H.put(968,"赵六");
System.out.println(map_H); 输出结果:{689=王五, 452=张三, 968=赵六, 285=李四}
//LinkedHashMap,键保存了插入的顺序,怎么存就怎么取
Map map_L = new LinkedHashMap();
map_L.put(452,"张三");
map_L.put(285,"李四");
map_L.put(689,"王五");
map_L.put(968,"赵六");
System.out.println(map_L); 输出结果:{452=张三, 285=李四, 689=王五, 968=赵六}
//TreeMap,按键的升序排序
//排序前提:键必须是同一种类型
Map map_T = new TreeMap();
map_T.put(452,"张三");
map_T.put(285,"李四");
map_T.put(689,"王五");
map_T.put(968,"赵六");
System.out.println(map_T); 输出结果:{285=李四, 452=张三, 689=王五, 968=赵六}
总结:
1* 基于array的集合适合查询,而基于linked(链表)的集合则适合添加和删除操作,基于哈希的集合介入二者之间。
即:Array读快改慢,Linked改快读慢,Hash两者之间
2* 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();Vector总是比ArrayList慢,所以要尽量避免使用。
3* 在各种Sets中,HashSet通常优于TreeSet(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。TreeSet存在的唯一理由:能够维护其内元素的排序状态。
4* 在各种Maps中HashMap用于快速查找。
5* 当元素个数固定,用Array,因为Array效率是最高的。
结论:最常用的是ArrayList,HashSet,HashMap,Array。而且,我们也会发现一个规律,用TreeXXX都是排序的。
集合类(Collection和Map接口)简介的更多相关文章
- JAVA集合详解(Collection和Map接口)
原文地址http://blog.csdn.net/lioncode/article/details/8673391 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父 ...
- 12. 集合类Collection和Map
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 第十节 集合类Collection和Map
接口 Collection<E> (E)代表类型 集合类: 与数组的异同: 数组:数组虽然也可以存储对象,但长度是固定的:集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象 ...
- 【Java】Collection与Map接口总结
Collection -----List -----LinkedList 非同步 ----ArrayList 非同 ...
- 集合类——Collection、List、Set接口
集合类 Java类集 我们知道数组最大的缺陷就是:长度固定.从jdk1.2开始为了解决数组长度固定的问题,就提供了动态对象数组实现框架--Java类集框架.Java集合类框架其实就是Java针对于数据 ...
- java.util (Collection接口和Map接口)
1:Collection和Map接口的几个主要继承和实现类 1.1 Collection接口 Collection是最基本的集合接口,一个Collection代表一 ...
- 【转】java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
原文网址:http://www.360doc.com/content/15/0427/22/1709014_466468021.shtml java 容器类使用 Collection,Map,Hash ...
- Java集合框架(Collection Framework)学习之 Collection与Map概貌
写过Java的人都知道Java集合类,也用过Java集合类.Java集合类位于 java.util 这个包下,就像它的包名暗示的那样,Java集合类就是一套工具.它就像工匠的工具箱一样,它能给使用它的 ...
- Java容器深入浅出之Collection与Iterator接口
Java中用于保存对象的容器,除了数组,就是Collection和Map接口下的容器实现类了,包括用于迭代容器中对象的Iterator接口,构成了Java数据结构主体的集合体系.其中包括: 1. Co ...
随机推荐
- [翻译]NUnit---Condition Asserts && Comparisons Asserts && Type Asserts (五)
网址:http://www.cnblogs.com/kim01/archive/2013/03/31/2991597.html Condition Asserts 测试指定条件的方法称作条件测试,测试 ...
- 洛谷P1850 [noip2016]换教室——期望DP
题目:https://www.luogu.org/problemnew/show/P1850 注释掉了一堆愚蠢,自己还是太嫩了... 首先要注意选或不选是取 min 而不是 /2 ,因为这里的选或不选 ...
- P2597 [ZJOI2012]灾难(倍增LCA+拓扑排序)
传送门 据大佬说这玩意儿好像叫灾难树还是灭绝树? 我们先按建图,设点$u$的食物有$x[1]...x[k]$,即在图中这些点都有一条指向它的边 以样例来说,对于人,羊和牛都有一条指向它的边,然而不管是 ...
- js实现浮动框跟随页面滚动,最后停留在原来位置
左边悬浮的二维码会跟随页面向上或者向下滚动,最后停留在原来的位置. <div style="background:red; width:1000px; height:7000px; m ...
- EditPlus里面自带有更改文件编码的功能
- 短URL生成
算法原理 算法一 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略 ...
- CSS——改变浏览器滚动条样式
https://www.cnblogs.com/sun-rain/p/5789417.html
- Ps 快捷键全解
一.工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取)矩形.椭圆选框工具 [M]移动工具 [V]套索.多边形套索.磁性套索 [L]魔棒工具 [W]裁剪工具 [C]切片工具.切片选择 ...
- ubuntu系统nginx+Redis+PHP
一.安装ngnix apt-get update sudo apt-get install nginx /etc/init.d/nginx start 二.安装php sudo apt-get ins ...
- canvas一周一练 -- canvas绘制立体文字(2)
运行效果: <!DOCTYPE html> <html> <head> </head> <body> <canvas id=" ...