JAVA 集合类小结
一 集合和数组
因为本人也是个go的爱好者,所以对于集合类算是摸的比较透的。
说到集合,必须了解数组和集合。
Java的数组长度固定,集合长度不定。集合是特定的数据结构的集合。
而go里面并没有集合,而是叫数组,切片和键值对。数组同样长度固定,切片键值对长度不固定,键值对是k-v结构。
go和Java的不同就是,切片和键值对要自己写方法成为特定的数据结构,才能合Java的集合类差不多。
也就是说Java的集合其实是Java开发者为了开发方便,定义的一系列数据结构的。那么只要理解java几个数据结构的特性那么就很好理解了。
二 基本接口 map,Iterable,collection
最上层的接口
map和Iterable。
map是键值对,Iterable是集合的迭代子。迭代子理解起来,就是集合每个元素的一个包装
次顶层的接口
collection实现Iterable接口,提供了按索引取值的方法。
这里可以看出collection对应go的切片,map和map对应。
三 数据类型接口 map,list,set
list,set实现collection接口。
list是有序,可重复的数据。
set是无序、不能重复数据。
map是键值对、键不可重复、值可重复。
四 数据功能区分
在上面说的三大类型下,根据线程安全,查询速度快,插入速度快,排序又有四个功能分类。
红色为面试常问结构
排序 TreeSet,LinkedHashSet TreeMap,LinkedHashMap
线程安全 vector synchronizedSet Hashtable,ConcurrentHashMap
查询速度快 ArrayList HashSet HashMap
插入速度快 LinkedList HashSet HashMap
list本来就是有序的,所以排序为空。
HashSet,HashMap为什么插入查询快的原因则是,因为用了hash算法。
LinkedHashSet和LinkedHashMap虽然本质上只是HashSet,HashMap实现了排序接口,但是插入的时候就排序,所以较慢。
TreeSet,TreeMap本身是按红黑树结构排序,但也能重写排序接口。
synchronizedSet是Colletions这个工具类里,算是冷门知识点。
五 数据结构的使用
第一,1.8引入了Stream之后,排序基本可以不用了,因为排序的使用次数低,我们不必保证数据插入或者查询一定有序。只需要我们取出来的时候有序即可,而Stream特性则大大的简化了我们自己写排序的代码量。
第二,分布式下考虑单机的线程安全,再用线程安全类简直杀鸡用牛刀。基本上synchronized,lock,原子类,Volidate之类的就能保证分布式下单机的线程安全就行了。
第三,插入速度的考量,降低io操作硬盘操作写操作,基本是每个系统到了后期性能提升一定要考虑的事情,而此时基本使用数组而非集合。
综上,我们基本使用查询快的类就好了。
六 遍历
1.遍历迭代子Iterator,而不直接遍历对象
2.for循环结束,立马回收Iterator
for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
Map.Entry e = (Map.Entry) it.next();
System.out.println("键" + e.getKey() + "的值为" + e.getValue());
}
3.对数据的删除修改操作,要用迭代子实现(否则可能出现线程安全问题)
for (Iterator<Entry<Long, String>> iterator = map.entrySet().iterator(); iterator.hasNext();) {
Entry<Long, String> entry = iterator.next();
long key = entry.getKey();
if (key < 10) {
iterator.remove();
}
}
JAVA 集合类小结的更多相关文章
- Java集合类小结-思维导图
java集合类分为collection 和 map两类Collection List ArrayList LibnkedList Vector Set HashSet TreeSet LinkedHa ...
- java集合类小结
1 集合的框架体系 List简介 集合的使用场合 List(链表|线性表)和Set(集) java.util.Collection ---| Collection 描述所有接口的共性 ----| Li ...
- Java 集合类的细节
java集合类 1.Collection,Map层次图 2.Collection接口 list 存放有序且允许重复的集合的接口 这里的有序是指存入顺序和取出顺序相同.子类有:{ ArrayList,L ...
- Java集合类--温习笔记
最近面试发现自己的知识框架有好多问题.明明脑子里知道这个知识点,流程原理也都明白,可就是说不好,不知道是自己表达技能没点,还是确实是自己基础有问题.不管了,再巩固下基础知识总是没错的,反正最近空闲时间 ...
- 做JavaWeb开发不知Java集合类不如归家种地
Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...
- 【转载】Java集合类Array、List、Map区别和联系
Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...
- 摘抄转载前辈们的Java集合类总结
本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...
- Java集合类简单总结(重学)
java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...
- Java中文编码小结
Java中文编码小结 1. 只有 字符到字节 或者 字节到字符 的转换才存在编码转码; 2. Java String 采用 UTF-16 编码方式存储所有字符.unicode体系采用唯一的码点表示唯一 ...
随机推荐
- IO系列之File
1 File类 1.1 目录列表器 在这里我主要是参考Think in Java的内容从而做的一些总结以及扩展.Java中的IO流的设计应该说是Java中最经典的,最学院式的设计,包括它的整体架构设计 ...
- 使用showMessageDialog显示消息框
-----------------siwuxie095 工程名:TestJOptionPane 包名:com.siwuxie095.showdialog ...
- Command line option syntax error. Type Command /? for Help.
--------------------------- Microsoft Visual C++ 2005 Redistributable --------------------------- Co ...
- R语言对矩阵按某一列排序
[plain] view plaincopy a <- c(5,4,3,2,1) b <- c(1,2,3,4,5) c <- cbind(a,b) [plain] view pla ...
- 关于login/interactive/no-interactive shell和profile/bash_profile/bashrc
login shell:第一次登录进系统时的shell,一般是指本机启动时的控制台shell或者ssh远程登录时的shell. interactive shell:登录以后,再打开控制台时运行的she ...
- 微信小程序自学第三课:文件作用域,模块化
一.文件作用域 在 JavaScript 文件中声明的变量和函数只在该文件中有效:不同的文件中可以声明相同名字的变量和函数,不会互相影响. 通过全局函数 getApp() 可以获取全局的应用实例,如果 ...
- Sharepoint2013商务智能学习笔记之Secure Store Service服务配置(二)
Secure Store Service 是运行在应用程序服务器上的授权服务,它提供一个存储用户凭据的数据库,Secure Store Service 在商务智能中的地位很重要,Sharepoint商 ...
- spark svm
首先spark上的svm只能处理线性的,不能处理非线性的.其次spark上的svm求解过程与普通的不同.普通的是通过拉格朗日对偶,然后通过SMO方法求. 但是在spark上,则没有通过拉格朗日,而是直 ...
- [WIP]laravel 入门
创建: 2019/06/20 安装 composer brew install composer laravel composer global require "laravel/i ...
- bzoj 3123: [Sdoi2013]森林(45分暴力)
3123: [Sdoi2013]森林 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 4184 Solved: 1235[Submit][Status ...