Java集合框架包含的内容
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
-
Collection 接口存储一组不唯一,无序的对象
-
List 接口存储一组不唯一,有序(插入顺序)的对象
-
Set 接口存储一组唯一,无序的对象
-
Map接口存储一组键值对象,提供key到value的映射
List接口的实现类
ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式,插入、删除元素时效率比较高
ArrayList集合类
确定存储方式
-
ArrayList类是List接口的一个具体实现类
-
ArrayList对象实现了可变大小的数组
-
随机访问和遍历元素时,它提供更好的性能
确定存储对象
-
创建类型:新闻标题
-
包含属性: ID、名称、创建者
具体实现
……
ArrayList常用方法
方法名 | 说明 |
---|---|
boolean add(Object o) | 在列表的末尾顺序添加元素,起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换 |
boolean contains(Object o) | 判断列表中是否存在指定元素 |
boolean remove(Object o) | 从列表中删除元素 |
Object remove(int index) | 从列表中删除指定位置元素,起始索引位置从0开始 |
Collection接口常用通用方法还有:clear()、isEmpty()、iterator()、toArray()
LinkedList集合类
确定存储方式
-
LinkedList类是List接口的一个具体实现类
-
LinkedList 类用于创建链表数据结构
-
插入或者删除元素时,它提供更好的性能
具体实现
……
LinkedList常用方法
方法名 | 说明 |
---|---|
void addFirst(Object o) | 在列表的首部添加元素 |
void addLast(Object o) | 在列表的末尾添加元素 |
Object getFirst() | 返回列表中的第一个元素 |
Object getLast() | 返回列表中的最后一个元素 |
Object removeFirst() | 删除并返回列表中的第一个元素 |
Object removeLast() | 删除并返回列表中的最后一个元素 |
Set接口
-
Set接口存储一组唯一,无序的对象
-
HashSet是Set接口常用的实现类
-
Set中存放对象的引用
Set接口采用对象的equals()方法比较两个对象是否相等
HashSet是Set接口常用的实现类
Set接口不存在get()方法
如何遍历Set集合
方法1:通过迭代器Iterator实现遍历
-
获取Iterator :Collection 接口的iterator()方法
Iterator的方法
boolean hasNext(): 判断是否存在另一个可访问的元素
Object next(): 返回要访问的下一个元素
Set<Integer> set = new HashSet<Integer>();
......
Iterator iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
方法2:增强型for循环
Set<Integer> set = new HashSet<Integer>();
......
for (int value:set){
System.out.println(value);
}
Map接口
Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作
-
最常用的实现类是HashMap
Map接口常用方法
方法名 | 说明 |
---|---|
Object put(Object key, Object val) | 以“键-值”对的方式进行存储 |
Object get(Object key) | 根据键返回相关联的值,如果不存在指定的键,返回null |
Object remove(Object key) | 删除由指定的键映射的“键-值对” |
int size() | 返回元素个数 |
Set keySet() | 返回键的集合 |
Collection values() | 返回值的集合 |
boolean containsKey(Object key) | 如果存在由指定的键映射的“键-值对”,返回true |
遍历Map集合
方法1:通过迭代器Iterator实现遍历
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext()){
int key = (int)iterator.next();
String value = map.get(key);
System.out.println(key+value);
}
方法2:keySet增强for循环
for (int key:map.keySet()){
String value = map.get(key);
System.out.println(key+value);
}
方法3:EntrySet键值对增强for循环
for (Map.Entry<Integer ,String> entry:map.entrySet()){
int key = entry.getKey();
String value = entry.getValue();
System.out.println(key+value);
}
泛型集合
泛型
将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性
-
本质是参数化类型
泛型集合
-
泛型集合可以约束集合内的元素类型
-
典型泛型集合ArrayList<E>、HashMap<K,V>(
<E>
、<K,V>
表示该泛型集合中的元素类型泛型集合中的数据不再转换为Object)
除了指定了集合中的元素类型外,泛型集合和之前学习的集合的用法完全一样
Collections算法类
-
Java集合框架将针对不同数据结构算法的实现都保存在工具类中
-
Collections类定义了一系列用于操作集合的静态方法
Collections和Collection不同,前者是集合的操作类,后者是集合接口
Collections提供的常用静态方法
sort():排序
max()\min():查找最大\最小值
Collections排序
-
Collections类可以对集合进行排序、查找和替换操作
-
实现一个类的对象之间比较大小,该类要实现Comparable接口,重写compareTo()方法