集合类(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 ...
随机推荐
- 【Codeforces】665E Beautiful Subarrays
E. Beautiful Subarrays time limit per test: 3 seconds memory limit per test: 512 megabytes input: st ...
- html使用css让文字超出部分用省略号三个点显示的方法案例
html使用css让文字超出部分用省略号三个点显示的方法: 我正确使用的就是下面的代码,li里面是a标记.在IE和google中使用是正常的,火狐不知道,我也不在意,等你来测 li{ display: ...
- go语言---defer
go语言---defer https://blog.csdn.net/cyk2396/article/details/78885135 defer 是在函数退出前调用,多个defer遵循 先进后出 的 ...
- go语言---for range
学习-go语言坑之for range https://www.cnblogs.com/hetonghai/p/6718250.html go只提供了一种循环方式,即for循环,在使用时可以像c那样使用 ...
- odb_sqlite_demo
#include <iostream> #include <odb/database.hxx> #include <odb/transaction.hxx ...
- Linux 用户管理(2)
Linux 用户管理2 添加修改和删除用户,必须是超级管理员root账号才可以进行的操作,所以当当前账号不是超级管理员root账号时,首先要先切换为root账号. 如图,ylq为普通用户,执行添加用户 ...
- 【React Native】React Native项目设计与知识点分享
闲暇之余,写了一个React Native的demo,可以作为大家的入门学习参考. GitHub:https://github.com/xujianfu/ElmApp.git GitHub:https ...
- codechef: BINARY, Binary Movements
非常有毛病的一道题,我一个一个读字符死活过不去,改成整行整行读就 A 了... 做法就是...最小点覆盖... 我们发现可以把一个点向上跳看做被吃掉了,然后最顶层的点是无法向上跳所以不能被吃掉,然后被 ...
- 最大加权矩形 luogu1719
题目链接:https://www.luogu.org/problemnew/show/P1719 这道题挺好做的 又是一道练前缀和的题 #include <bits/stdc++.h> # ...
- Python之列表生成式、生成器
列表生成式 ——可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁: >>> [x * x for x in range(1, 11)] [1, 4, ...