2022-08-06 田龙跃 学习笔记
一.conllection接口(存储单值的最大接口):
1.List -ArrayList查找较方便,删除和插入会动态改变集合内元素的位置(存放数据的特点:存放的数据有顺序;数据可以重复)
2.Set:插入和删除不会改变集合内元素的位置
(.size是集合内有效数据的个数 .contains引用数据类型比较的是地址,除非重写equals)
二.map接口(存储对值的最大接口):key value
面试题
ArrayList :底层是数组,方便查找,修改
LinkList:底层是双链表,方便插入,删除
Vetor:几乎和arraylist没区别,但Vetor是线程同步的,arrayList是线程异步的
面试题:
LIst:有顺序,元素可以重复,顺序指添加的先后顺序
Set:无顺序,元素不可以重复,无顺序是指不按你添加的顺序进行存储(无需不等于随机,所谓的无序只是不按添加顺序,但存储时内部其实是二叉树+链表(节点是链表)算法存储)
(hash)set的的不重复:基本数据类型和包装数据类型都是直接比值;引用数据类型默认比地址,除非重写equals和hashcode(相同数据只有相同的hashcode)底层是hashmap(存储结构同hashMap)
treeset(要求存储的数据必须实现compareable接口)重写compareTo方法(才能进树中)
linkedHashset(双链表):有序了,维护了添加时的顺序
compareable接口(自然排序:固定规则):有一个compareTo方法,返回-1:往调用者的前面去 0:大小相等 1:往调用者的后面去
comparator接口(临时排序)(o1,o2)o1是调用者
map:
1.HashMap JDK1.7之前,链表+二叉树 1.7之后,链表+数组+红黑树
2.Hashtable :HashMap是线程不安全的,Hashtable是线程安全的;HashMap的key是可以为空的,Hashtable不可以为空
3.LinkedHashMap:和LinkedSet差不多
4.Propertiy(属性)继承自Hashtable:.load(IO流)
5.TreeMap
Collections:集合工具类