集合框架
集合:对象的容器,存储对象的对象,可代替数组.
Collection 父接口
- 特点:代表一组任意类型的对象,无序,无下标.
- 方法:Collection接口是List和Set接口的父接口
- boolean add(Object obj) //添加一个对象
- void clear() //清空此 集合中的所有对象
- boolean contains(Object o) //检查此集合中是否包含对象
- boolean containsAll(object o) //检查此集合中是否包含o中所有的对象
- boolean isEmty() //判断此集合是否为空
- boolean remove(Object o) //在此集合中移除o对象
- int size() //返回此集合中的元素个数
- Object[] toArray() //将此集合转换成数组
List集合
- 特点:存储Object类型的对象,有序,有下标,元素可以重复.下表范围 :0~集合有效数-1(size-1)
方法:List集合 中添加一些方法.
- void add(int index,Collection c) //将c中所有的元素存储在指定下标index位置
- Object get (int index) //返回集合中指定的位置
- Object remove (int index) // 移除index位置上的元素,返回删除的对象
- Object set(int index,Object element) //替换index位置上的值,返回修改前的元素
- List subList(int fromIndex,int toIndex) //返回集合中指定的元素
- int indexOf(Object o) //返回对象第一次出现的下标,如果没有返回-1
- int lastIndex(Object o) //返回对象最后一次的下标,如果没有返回-1
实现类: ArrayList,底层数组实现
- ArrayList :
- 底层数组实现,查询块,增删慢.jdk1.2 后,线程不安全,运行效率快
- Vector:
- 底层用 数组实现,查询块,增删慢,1.0 ,线程安全,运行效率慢
- LinkedList:
- 底层使用链表实现,增删快,查询慢
- ArrayList :
- 遍历方式,forEach遍历
- 泛型集合:参数化类型,类型安全的集合,强制集合元素类型一致.
- 泛型类:
- 特点:
- 编译即可检查,而非运行时抛出异常.
- 访问时,不必类型转换(拆箱).
- 不同泛型之间引用不能互相赋值,泛型不存在多态.
- 语法: class 类名<泛型类型标识符1,泛型类型标识符2>{
泛型类型标识符1 变量名;
} - 泛型对象: 类名<具体类型> 对象名 = new 类名<具体类型>();
- 泛型接口:
- interface 接口名<泛型标识>{}
- 特点:
- 泛型类:
interface MyInter<T>{
T getvar();
}
- 实现类:
- class Class implements MyInter<String>{
public String getVar(){
return "nice";
}
}
- class classD<T> implements MyInter<T>{
T value;
public T getVar(){
return value;
}
}
Colletions工具类
- public static void reverse(List list): 对集合元素倒置
- public static shuffle(List list): 对集合元素随机显示
- public static void sort(List list): 对集合元素排序
- 几何元素是自定义的对象,必须实现java,util.Comparable接口,并实现comparaTo方法.- Set集合
- 特点:无序,无下标,元素不可重复.
- 方法:全部继承自Collection中的方法.
- 实现类:HashSet.
- 遍历方式: forEach遍历.
HashSet 添加元素原理
- 将自定义类型对象存入HashSet时,无法保证元素不重复.
- 当存入元素的哈希码相同时,会调用equals进行确认,如果为true,则拒绝后置存入.
- 覆盖equals方法,保证相同对象的结果为true.
- 为触发equals方法的调用,,重写hashCode方法:
- 确保相同的对象返回相同的哈希码值.
- 尽量保证不同对象返回不同的哈希码.
TreeSet实现类
- 基于排列顺序实现元素不重复.
- SortedSet接口是Set子接口:
- 特点:存储Object对象,无序,无下标,元素不重复.可对集合元素自动排序.
- 实现类: TreeSet
- 元素对象的类型必须实现Comparable接口,指定排序规则.
- 通过CompareTo方法确定是否为重复元素.
- 遍历方式:迭代遍历,forEach遍历
- 注意:TreeSet通过CompareTo方法返回值是否为”0”确定重复元素.
Map体系集合
特点:
- 用于存储任意键值对(Key-Value)
- 键:无序,无下标,不允许重复(唯一)
- 值: 无序,无下标,允许重复
Map父接口
- 特点:存储一对数据(Key-Value),无序,无下标,键不可重复,值可重复.
- 方法:
- V put(K key,V value) //将对象存入到集合中,关联键值.key重复则覆盖原值.
- Object get(Object key) //根据键获取对应的值.
- Set //返回所有key
- Collection values() //返回包含所有的Collection集合.
Set<Map.Entry<K,V>>
//键值匹配的Set集合.
Map集合的实现类
- HashMap:
- JDK1.2版本,线程不安全,运行效率快;允许用null 作用为key或是value
- Hashtable:
- JDK1.0 ,线程安全,运行效率慢,不允许null作为key或是value
- Properties:
- Hashtable的子类,要求key和value都是String.通常用于配置文件的读取.
- TreeMap:
- 实现了SortedMap接口(是Map的子接口),可以对key自动排序.
- HashMap: