集合框架
1. 什么是框架
简称为:JCF (Java Collection Framework) 为了解决某些问题而预先设计的一系列具有继承或实现关系的类与接口
在使用过程中我们只需从中选择相应的实现功能
2. 集合分类
学习集合各自的特点,分清什么时候使用哪一个。 语法:集合的基本操作(放,取,删,改,遍历)
新知识点:①泛型 ②迭代器 ③HashCode()
1. List
特点:线性,有序(有下标),最常用子类—ArrayList LinkedList
n ArrayList—底层实现就是使用的数组,它完成对数组的封装
n LinkedList—底层实现采用双向链表,空间不是连续的。但是API完全一样
u 首先产生集合类的对象 ArrayList lst = new ArrayList();
u 得到元素个数 lst.size();
u 根据位置获取某个元素 lst.get((下标));
u 可以修改某个位置的映射 lst.set(下标, 250);
u 删除某个位置的元素 lst.remove(下标);
u 对List进行遍历 for、for each、集合框架类—迭代器:Iterator
Iterator it = lst. Iterator();
While(it.hasNext()//查找是否有下一个下标){Object obj= it.next();//取出下标对应的数据}
n ArrayList与LinkedList的使用场景
u 当需要做大量查询某个元素的时候,ArrayList效率高于LinkedList
u 往尾部添加或删除元素的时候,ArrayList效率高于LinkedList,
往中间添加或删除元素的时候,LinkedList效率高于ArrayList
n 面试时常常用ArrayList与vector做辨析
u 因为:Vector同样是List分支下面的集合类,底层使用的数据结构仍然是数组,提供的API也是同样的。
u 差异:ArrayList是线程不安全的,效率高的。Vector是线程安全的,效率低的
u 使用场景:vector在多线程情况下,且可能出现线程安全性问题是,才会用来代替ArrayList
n <类型>——泛型——表示该集合只能存放该类型及其子类的元素
2. Set
特点:不能存放重复元素,无序—外部放入的顺序不是内部存放的顺序,所以没有下标
n HashSet
u 不可以根据位置获取下标
u 不可以修改某个位置的元素
u 不可以删除某个位置的元素
u 可以根据传入的对象,删除Set集合中的重复对象lst.remove(Object);
u 获取Set集合的元素,只能使用遍历的方式。for-each循环
n 探究—HashSet是如何判断两个对象是重复对象的
u 两个对象的equals判断必须返回true
u 两个对象的Hash值必须相等,缺一不可
3. Map
特点:键值对(K—value对)
n Map—映射。特点:用键值对的方式保存数据。—数据在Map集合中是成对存放的,每个元素除了有值,还有一个唯一的键需要我们定义
n 常用类—HashMap、Properties
u 首先产生集合类的对象 HashMap<String,Student> map = new HashMap<String, Student> ();
u 放入元素 map.put(键, 值);
u 得到元素个数 lst.size();
u 取数据—要根据键获取值 map.get(键);
u 修改元素,只需要放入相同的键map.put(相同的键, 值);
u 删除某个位置的元素 map.remove(键);
u 对Map进行遍历
l Map不能直接遍历—因为Map里的每一条记录都是一对儿,我们无法用一个变量来装
l Map只能单独遍历所有的键或所有的值
l Set keyset= map.keySet() 把map中所有的键取出来放到一个Set集合中
l Set keyset= map.values() 把map中所有的值取出来放到一个Collection集合中
l 统一使用for—each循环进行遍历
n 在获取元素、删除元素,如果传入的键在map中不存在,不会报错,这是危险的,同样在修改元素时,如果传入的键在map中不存在,就直接变成增加新元素
n 解决方案:利用ContainsKey(键)可以判断一个map集合是否包含某个键,ContainsValue(值)可以判断一个map集合是否包含某个值,判断的标准和Set中判断重复对象的方式一样,equals和HashCode()
3. 集合工具类
跟排序有关的方法—只能操作List集合
l 自然排序—Collection.sort();
l 翻转—Collection.reverse();
l 混排—Collection.shuffle();—洗牌效果
比较器
l 内部 — comparable
n CompareTo方法如果说对象小于、等于或大于指定对象,指代的是位置的前后顺序
l 外部 — comparator
Properties
l Map集合
l 操作属性文件