集合
为什么使用集合框架?
如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象–可以使用Java集合框架
Java集合框架包含的内容
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
Iteratior:接口类
ArrayList:具体实现类
Collection:所有Java集合框架的父接口
Collections:操作集合的工具类
Utilities:算术类。提供了对集合进行排序、遍历等多种算法实现
Collection接口:
Collection接口存储一组:不唯一、无序的接口
List接口存储一组:不唯一、有序(插入顺序)的对象
Set接口存储一组:唯一、无序的对象
Map接口存储一组链值对象,提供Key到value的映射
Collection接口常用通用方法还有:
clear() 、 isEmpty() 、 iterator() 、toArray()
List接口:的实现类
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储。插入、删除元素时效率比较高
ArrayList常用方法
方法名 | 说明 |
---|---|
bollean add(Object o) | 在列表的末尾顺序添加元素,起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间 |
int size() | 返回列表中的元素个数 |
Object fet(int index) | 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换 |
boolean contains(Object o) | 判断列表中是否存在指定元素 |
boolean remove(Object o) | 从列表中删除元素 |
Object remove(int index) | 从列表中删除指定位置元素,起始索引位置从0开始 |
LinkedList常用方法
方法名 | 说明 |
---|---|
void addFirst(Object o) | 在列表的首部添加元素 |
void addLast(Object o) | 在列表的末尾添加元素 |
Object getFirst() | 返回列表中的第一个元素 |
Object getLast() | 返回列表中的最后一个元素 |
Object removeFirst() | 删除并返回列表中的第一个元素 |
Object removeLast() | 删除并返回列表中的最后一个元素 |
Set接口:
HashSet是Set接口常用的实现类
Set中存放对象的引用
Set set = new HashSet();
String s1 = new String("java");
String s2 = s1;
String s3 = new String("JAVA");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());
Set接口如何判断加入对象是否已经存在?
采用的对象的equals()方法比较两个对象是否相等
Set接口不存在get()方法
newsTitleSet.get(0);
迭代器Iterator
如何遍历Set集合?
方法一:通过迭代器Iterator实现遍历
获取Iterator:Collection接口的iterator()方法
Iterator的方法
boolean hasNext():判断是否存在另一个可访问的元素
Object next():返回要访问的下一个元素
方法二:增强型for循环
Map接口
与Collection没有继承关系,是一个独立的接口
Map接口专门处理键值映射数据的存储,可以根据键值实现对值的操作
最常见的实现类是HashMap
import java.util.HashMap;
import java.util.Map;
//存储国家的英文简称(键) 国家全程(值) (键-值对)
public class MapDemo {
public static void main(String[] args) {
Map countries = new HashMap();
//往Map集合中添加键值对
countries.put("CN", "*");
countries.put("RU", "俄罗斯联邦");
countries.put("FR", "法兰西*");
countries.put("US", "美利坚*");
//获取Map的元素组数
System.out.println(countries.size());
//通过某个键获取对应的值
String cnStr = (String)countries.get("CN");
System.out.println(cnStr);
//判断Map中是否包含某个键
boolean flag = countries.containsKey("US");
System.out.println("集合中是否包含us?"+flag);
//删除特定键对应的键值对
countries.remove("US");
System.out.println(countries.size());
flag = countries.containsKey("US");
System.out.println("集合中是否包含US?"+flag);
//分别显示Map中键集、值集 和键值对集
System.out.println(countries.keySet());
System.out.println(countries.values());
System.out.println(countries);
//清空
countries.clear();
if(countries.isEmpty()) {
System.out.println("Map数据已经清空!");
}
}
}
t.println(countries.values());
System.out.println(countries);
//清空
countries.clear();
if(countries.isEmpty()) {
System.out.println("Map数据已经清空!");
}
}
}