list:元素有序,可以重复的集合
ArrayList、LinkedList、Vector
set:元素无序、不可重复的集合
HarshSet 、LindedHashSet、TreeSet
Map接口:具有映射关系“key-value”对的集合
HashMap、LinkedHashMap、TreeMap、Hashtable(子类:Properties)
增(add(Object obj))删(remove)改(set(int index,Object obj))
查(get (int index))插(add(int index,Object ele))
int indexOf(Object obj) 返回obj在集合中首次出现的位置,没有的话,返回-1
intlastIndexOf(Object obj) 返回obj在集合中最后一次出现的位置,没有的话,返回-1
List subList(int fromIndex,int toIndex)返回从fromIndex到toindex结束的一个list子集
linkedList 不是通过数组来存储的,而是通过链式存储,比较适合频繁的插入删除等操作
1.存储的元素是无序的,不可重复的,但是不等于随机性,指的是元素在底层存储的位置是无序的
2.不可重复性:当添加相同的元素时,后面这个不能添加进去
HashSet中元素如何存储:哈希算法
当向set中添加对象时,首先调用此对象所在类的hashcode方法,计算hashcoude的值,此哈希值决定了此对象在set中的存储位置,如果此位置之前没有对象存储,则这个对象直接存储到此位置,如果已经有值,通过equals方法比较两个对象是否相同,如果相同,后一个对象就不能再添加
要求 hashCode 和 equals 方法一致
使用链表维护了一个添加进集合中的顺序,导致遍历LinkedHashSet集合元素时,是按照添加进去的顺序遍历的
1.向 TreeSet 中添加的元素必须是同一类的
2.可以按照添加进集合中的元素的指定的顺序遍历,像 String 包装类等默认按照从小到大的顺序遍历
3.当向 TreeSet 中添加自定义类的对象时,有两种排序方法
1.自然排序 2.定制排序
4.自然排序:要求自定义类实现 java.lang,Comparable 接口并重写其 compareTo(Object obj) 在此方法中,指明按照自定义类的哪个属性进行排序
5.向TreeSet中添加元素时,首先按照 CompareTo() 进行比较,一旦返回 0 ,虽然仅仅是两个对象的此属性值相同,但是程序会认为这两个对象是相同的,进而后一个对象就不能添加进来。
compareTo() hashCode() equals()三者保持一致
1.都可以是任何引用类型的数据
2.key用set来存放,不允许重复,value使用collection存放,可以重复,一个key和一个value对是一个Entry,所有的Entry使用Set存放,不可重复,同一个map对象所对应的类,需要写hashcode和equals方法
3.常用String作为Map的键
4.key和value之间存在单向一对一的关系,通过key总能找到唯一确定的value
LinkedHashMap
使用链表维护添加的顺序,遍历map时,是按照添加的顺序遍历的
TreeMap
按照添加进Map中的元素的key的指定属性进行排序,要求key必须是同一个类型的
针对key:自然排序,定制排序
Hashtable
古老的map实现类,线程安全
与HashMap不同,Hashtable不允许使用null作为key和value
与hashMap 一样,hashtable也不能保证key-value对的顺序
判断是否相等的标准和hashmap一致
reverse(List):翻转List中元素的顺序
shuffle(List):对List集合元素进行随机排序
sort(List):根据元素的自然顺序对指定List集合元素按升序排序
sort(List,Comparator):根据指定的Comparatro产生的顺序对List集合元素进行排序
swap(List,int,int):将指定List集合中的i处元素和j处元素进行交换
Collection.copy(list1,list);