Java集合(容器)的总结!
来源:互联网 发布:基本网络知识 编辑:程序博客网 时间:2024/06/06 03:50
集合(容器):包含的都是接口:
Collection接口:存储一组不唯一,无序的对象。
List接口:存储一组不唯一,有序(插入顺序)的对象。
Set接口:存储一组唯一,无序的对象。
Map接口:存储一组键值对,提供key-value的映射。
集合作为容器具有增、删、改、查的功能。
增:add();添加,存储对象。 size();容器中元素的实际个数。
remove();clear();removeAll(Collection<> c);retainsAll(Object obj); 删除
contains(Object obj);isEmpty();判断元素 iterator();遍历元素
对于集合的遍历(三种方法):for循环遍历,foreach遍历,迭代器遍历。(hastnext();下一个,next()本身)。
ArrayList:实现了了长度可变的数组。
-优点:遍历元素和随机访问的效率比较高。
-缺点:添加和删除元素需要大量移动元素,效率低,按照内容查询效率低。
LinkedList:采用链表存储方式。
-优点:插入、删除元素时效率比较高。
-缺点:遍历和随机访问元素效率低。
特有的方法:offerFirst(); offerLast();添加头/尾。
PollFirst(); pollLast();删除头/尾。
peekFrist(); peekLast();获取头/尾
Set接口:
Set接口存储一组唯一,无序的对象(存入和取出的顺序不一定一致),操作数据的方法与List类似,但是set接口中不存在get方法。
HashSet:采用Hsahtable哈希表存储结构。
-优点:添加速度快,查询速度快,删除速度快。
-缺点:无序。
-LinkedHashSet: 采用哈希表存储结构,同时使用链表维护次序,有序(添加顺序)。
TreeSet:采用二叉树(红黑树)的存储结构。
-优点:有序(排序后的升序)查询速度比List快(按照内容查询)。
-缺点:查询速度没有HashSet快。
Set集合因为是唯一的,所以会剔除重复元素,如果是引用数据类型需要重写hashcode和equals方法。
TreeSet集合要求你提供排序规则,因此需要实现比较接口Comparable的ComparaTo方法。
Set相对于List没有下标,所以没有get()方法,不能使用普通的for循环取值。(foreach和iterator)。
<泛型>:不特指哪一种类型,你定义什么类型就是什么类型。
package cn.bjsxt.demo;public class Point2<T> {//此处可以随便写标识符号,T是type的简称,也可以写a,b,cprivate T var;//var的类型由T指写,由外部指定public T getVar() {//返回值的类型由外部指定return var;}public void setVar(T var) {//参数的类型由外部指定this.var = var;}
Map接口:
HashMap:Key无序,唯一,value无序,不唯一。
LinkedHashMap:有序的HashMap速度快。
TreeMap:有序,速度没有hash块。
添加:put() 删除:clear(); remove()
判断:containsKey();判断key是否存在。ContainsValue();判断value是否存在。
遍历:get(key); values();返回一个集合包括所有value值。
Keyset();返回所有key值。Entryset();返回包括映射的关系图。
Collections和Collection不同,前者是集合的操作类,后者是集合的接口。
Collections提供的静态方法:
AddAll();批量添加 sort();排序 binarySearch();二分法查找 fill();替换
shuffle(); 随机排序 reverse();倒序排序。
- Java集合(容器)的总结!
- Java集合容器总结
- Java集合容器总结
- Java集合容器总结
- Java集合容器总结
- Java容器/集合总结
- java集合容器总结
- Java集合容器总结
- java常用容器(集合)的总结
- 黑马程序员--javaSE--java集合容器总结
- Java容器(集合),持有对象总结
- Java容器(集合),持有对象总结
- java集合的总结!
- java集合的总结!
- java集合的总结
- java集合的总结
- Java集合的总结
- Java集合的总结
- (UVALive
- 杭电-5858-几何,思维
- 详解Vue组件系统
- HDU 6060 RXD and dividing
- 最小生成树解题思路
- Java集合(容器)的总结!
- 优化版冒泡排序Java代码
- python
- spark学习笔记(1)
- Android截屏SurfaceView黑屏问题的解决办法
- J2ME程序开发九大要点(上篇)
- [leetcode]98. Validate Binary Search Tree@Java解题报告
- 右值以及移动函数
- Java内存区域剖析 —— 定位OutOfMemory异常之前的必修课