** JavaSE 第7章 集合**
1. 对象的存储 ①数组(基本数据类型 & 引用数据类型) ②集合(引用数据类型)
数组存储的弊端 : 长度一旦初始化以后,就不可改变,真正给数组元素赋值的个数没有现成的方法可用
**2. 集合框架 **
Collection 接口 方法
① add(Object obj) addAll(Collection coll),size(),clear(),isEmpty();
② remove(Object obj) removeAll(Collection Coll),retainAll(Collection coll)
equals(Object obj) cotains(Object obj),cotainsAll(Collection coll) hashCode()
③ iterator(),toArray()
List 接口: 存储有序的,可以重复的元素--相当于动态数组
|--新增的方法 : 删除remove(int index) 修改set(int index,Object obj)
|-- 获取get(int index ) 插入 add (int index ,Object obj)
|-- 添加进List 集合中的元素(或对象)所在的类一定要重写equals()方法
SET 接口 : 存储无序的(!=随机性),不可重复的元素(相同元素后面进不去) --相当于高中的“集合”概念
set 使用的方法基本上都是Collection接口下定义的
添加进set集合所在的类一定要重写equals()和hashcode() 且 方法保持一致
|--HashSet (主要实现类)
|--LinkedHashSet
(是HashSet子类,当遍历集合元素时,是按照添加进去的顺序实现,维护了一个链表指针;若频繁地遍历,较少的增删操作,效率较高)
|--TreeSet (底层二叉树存储: 可按照添加进集合的指定属性排序)
①要求TreeSet添加进的元素必须是同一个类
②两种排序方式 :
要求重写的compareTo或compare()方法 与equals()和hashcode()方法 保持一致
自然排序 :
①要求添加进TreeSet中的元素所在类implements Compareable 接口
②重写compareTo(Object obj),此方法指明按照元素的哪个属性进行排序
③ 向TreeSet中添加元素即可.若不实现此接口.会报运行异常
定制排序 : ①创建一个实现Coparator接口的实现类的对象.在实现类中重写Comparator的compare(Object o1,Object o2)方法 ② 在此compare()方法中指明按照元素所在类的那个属性进行排序 ③将此实现Comparetor接口的实现类的对象作为形参传递给TreeSet构造器中 ④向TreeSet中添加元素即可,若不实现此接口,会报运行时异常
Map 接口存储 “键-值”对的数据 ----相当于高中的函数y=f(x)
① key是不可重复,使用set存放。value可以重复,使用Collection来存放。一对key-value构成一个entry(Map.Entry) ,entry是用set存放
②方法: 添加,修改put(Object key,Objet value) 删除remove(Objet key)获取 get(Object key) ,size() keySet(),values(),entrySet()
|-- HashMap 主要实现类 可以添加null键null值 |-- LinkedHashMap 是HashMap的子类,可以按照添加进Map的顺序进行遍历 |-- TreeMap 需要按照key所在类的指定属性进行排序,要求key是同一个对象,对key考虑进行自然排序或定制排序 |-- Hashtable 是一个古老的实现类,线程安全的,不可以添加null键 \null值.不建议使用 子类 properties 常用来处理属性文件
Iterator 接口: 用来遍历集合Collection 元素
3. Collections工具类: 操作Collection及Map工具类,大部分为static的方法
sort() 升序自然排序 , reverse() 反转 ,reverseOrder(Comparator