标签:lis 不能 src 索引 自己 util es2017 put list排序
集合:长度可变,可以存放不同类型的元素,只能存放引用类型
数组:长度固定,只可以存放相同的同种类型的元素,可以存放数据类型也可以存放引用类型
.
1.Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。Set只能通过游标来取值,并且值是不能重复的。
2.List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。ArrayList 是线程不安全的, Vector 是线程安全的,这两
个类底层都是由数组实现的 LinkedList 是线程不安全的,底层是由链表实现的
3.Map 是键值对集合,其中key列就是一个集合,key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是Map的三个主要的实现类。
HashTable 是线程安全的,不能存储 null 值 HashMap 不是线程安全的,可以存储 null 值
Collection中的存放的数值可以重复,有序
List 和 Set接口继承Collection接口,
LIst接口可以由Vector,ArrayList,LinkedLIst实现
Set接口可以由HashSet,SortedSet实现
boolean add(Object element):向此collection中添加元素
Int size():返回此collection中的元素个数(或者是集合的长度)
boolean isEmpty():判断此collection中是否包含元素
boolean contains(Object obj):判断此collection是否包含指定的元素
boolean containsAll(Collection c):判断此collection是否包含指定collection中的所有元素
boolean addAll(Collection c):将指定collection中的所有元素添加到此collection中
boolean remove(Object element):从此collection中移除指定的元素(第一个与之匹配的数值)
boolean removeAll(Collection c):移除此collection中包含在指定collection中的所有元素
void clear():移除collection中所有的元素
boolean retainAll(Collection c); 仅保留此collection中和指定collection的交集元素
Iterator iterator():返回此collection元素的迭代器
Object[] toArray():把此collection转成数组
Object get(int index) 获取指定位置索引的元素
void add(int index, Object element);在指定位置插入指定元素,其他元素依次后移
Object set(int index, Object element) 用指定元素替换指定位置的元素
List subList(int fromIndex, int toIndex) 返回列表中指定的fromIndex(包括 )和 toIndex(不包括)之间的部分列表
int indexOf(Object o) 根据元素获得索引;如果此列表不包含该元素,则返回 -1。(从左到右的第一个元素)
//hasNext()判断是否有下一个元素
//next()获取下一个元素
想要实现排序,集合中所存放的数据类型
这个类必须实现compareto接口(重写compareto方法)
在Java中数组排序的方法是java.util.Arrays.sort(数组)
LinkedList除了实现List接口外,还实现了Queue接口,并提供了对列表开头、结尾操作的方法,使得LinkedList具有栈、队列的双重特点。
栈:后进先出,LastInFirstOut,LIFO
队列:后进后出,LastInLastOut,LILO
ArrayList和LinkedList对比
1.查找元素时,ArrayList效率高
2.进行插入和删除元素时,LinkedList效率高
Set接口常用实现类:
HashSet: 不记录添加数据的顺序,且加入的元素不能重复,否则覆盖。(基于哈希散列,Set存、取、删 都有较高的效率)
加入HashSet集合的自定义类型的对象通常需要重写hashCode()和equals()方法。通过hashcode()获取到任何一个对象的哈希码值
hashCode()用于判断是否是同一类型的,equals()标记,根据哪个属性排序
TreeSet 同样不记录添加数据的顺序,但是可以对存入的元素进行排序(基于红黑树实现),输出也会按照排序后的顺序 (排好序的)
LinkedHashSet 根据元素的哈希码进行存放,同时用链表记录元素的插入顺序(有序的:存取数据的位置无变化)
set常用的方法:
add()添加
remove()删除
clear()清空
Map中存储的“键-值”映射对是通过键来唯一标识,Map的“键”底层采用Set来存放。 因此,存入Map中的“键”如果是自定义类,应该重写hashCode()和equals()方法,确保键的唯一 常用String作为Map的"键"。
1.常用的方法
put(K key, V value):将指定的"键-值"对存入Map中
get(Object key):返回指定键所映射的值
int size():获得此Map中"键-值"对的数量
remove(Object key):根据指定的键把"键-值"对从Map中移除
*boolean containsKey(Object key):判断Map是否包含指定的键
*boolean containsValue(Object value):判断此Map是否包含指定的值
boolean isEmpty():判断此Map中是否有元素
void clear():清空Map中的所有"键-值"对
Set<K> keySet():返回此Map中包含的键的Set集合。
Collection<V> values():返回Map中包含值的Collection集合
replace(Object key,Object values)替代指定key值得values值
2.HashMap内部对“键”使用Set进行散列存放。因此,根据“键”取“值”的效率较高,也是Map接口使用频率较高的一个实现类。
①通过key值 获得value值
获取集合中所有key值(get)
用foreach语句循环遍历key值 得到value值
②获取集合总所有value值
③获取map集合中成对的数据
Map.Entry是Map内部定义的一个static接口,专门用来保存key-value对的内容。
通过entrySet()方法取到Entry对象,然后使用getKey(),getValue()获取键、值 一般情况下,map多用于存放、查找数据,遍历输出的情况较少。
4.区别
HashMap的键采取哈希值存储,不记录元素插入的位置,也不排序
TreeMap的键采取红黑树存储,不记录元素插入的位置,但是可以排序
LinkedHashMap的键采取哈希值存储,并使用链表记录元素插入的位置,不排序
存放要求
无序,无下标,不可重复,不能随机访问-Set
有序,有下标,可重复,可以随机访问-List
“key-value”对,较多存放,较少遍历-Map
读和改(插入删除)的效率
Hash-两者都较高
ArrayList-读(指定下标随机访问)快,插入/删除元素慢
LinkedList-读(指定下标随机访问)慢,插入/删除元素快
//^_^本人新人,以上是上课记得笔记和自己的理解,如有异议,欢迎一起讨论
标签:lis 不能 src 索引 自己 util es2017 put list排序
原文地址:http://www.cnblogs.com/xiaoyaoli/p/7406872.html