一、集合框架
用途:存储数据。
包:java.util
接口:Collection、Map、List、Set、Iterator
类:ArrayList、LinkedList、HashSet、HashMap
辅助类(算法类):Collections
注意:List和Set均继承自接口Collection
ArrayList和LinkedList都实现了接口List
HashSet实现了接口Set
HashMap实现了接口Map
Iterator = Collection.iterator()
二、集合的使用特点
List:存储不唯一,有序(存储的顺序和插入顺序)的对象
Set:存储唯一,无序的对象
Map:存储一组键值对对象,提供key到value的映射
三、List接口
ArrayList:
适用场景:从ArrayList中查找元素速度很快,性能高。不适合对集合元素频繁进行插入、修改、移出操作的场景。
特点:长度可变,在内存中分配连续的空间。
add(Object object):向集合中添加元素
size():获取集合中元素的个数
get(int index):获取集合中指定位置的元素(index指代元素的索引下标)。
remove(int index) remove(Object obj):移除元素
clear():清空所有元素
isEmpty():判断集合是否为空
LinkedList:
适用场景:对LinkedList进行频繁插入、修改、移出操作时速度快,性能高。查找元素时不如ArrayList性能高。
特点:实现了链表方法来存取数据。
LinkedList包含add、get、remove、clear、isEmpty、size等方法,
还提供了addFirst()、addLast()、removeFirst()、removeLast()、getFirst()、getLast()等方法。
四、Set接口
HashSet:
特点:存储一组唯一(不相等)、无序的对象。
注意:
HashSet如何判断2个对象是否相等?如果2个对象的toString()方法和hashCode()方法的返回值都相等,则两个对象相等。
HashSet没有get方法,用来获取元素。原因是添加进去的元素是没有顺序的(添加的顺序和存储的顺序不一致)。
如何遍历循环HashSet
通过Iterator接口实现对HashSet的遍历
1.hasNext():用于判断集合中是否还存在下一个元素。
2.next():获取集合中的下一个元素。
HashSet set = new HashSet();
set.add(1);
set.add("zhangsan");
set.add("河北省");
//循环遍历
Iterator list = set.iterator();
while(list.hasNext()){
Object obj = list.next();
System.out.println(obj.toString() + obj.hashCode());
}
五、Map接口
HashMap:
特点:以键值对的方式存储数据。
注意:键key不能重复。
六、泛型类
数据类型参数化。
上述集合类和接口,都提供了对应的泛型类和接口
Collection -> Collection<E> List -> List<E> Set -> Set<E> Map -> Map<K, V> Iterator -> Iterator<E>
ArrayList -> ArrayList<E> LinkedList -> LinkedList<E> HashSet -> HashSet<E> HashMap -> HashMap<K, V>
优点:不用频繁进行数据类型转换(向上转型、向下转型)
七、Collections算法类
提供了一组方法,用于对集合实现某些功能。
max():求集合中最大的元素
min():求集合中最小的元素
sort():对集合中的元素进行排序。
注意:使用上述方法,要求让集合元素的数据类型实现Comparable<E>接口