Collection接口
Collection表示一组对象,他是集中、收集的意思,就是把一些数据收集起来。
Collection函数库是在java.util包下的一些接口和类,类是用来产生对象存放数据用的,而接口是访问数据的方式。
Collection函数库与数组的亮点不同:
1. 数组的容量低有限的,而Collection库没有这样的限制,它的容量可以自动调节;
2. Collection函数库只能用来存放对象,而没有这样的限制。
Collection接口是Collection层次结构中的根接口,它定义了一些最基本的访问方法,让我们能用统一的方式通过它或它的子接口来访问数据。
区别:Collection代表一组对象,Collection函数库就是java中的集合框架,Collection接口是这个集合框架中的根接口。存放在Collection库中的数据被称为元素(element)。
Collection接口:定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。
-Set中的数据对象没有顺序且不可重复。
-List中的数据对象有顺序且可重复。
Map接口定义了存储“键(key)-值(value)映射对”的方法。
Map接口
实现Map接口的类用来存储键(key)-值(value)对
Map接口实现类有HashMap和TreeMap
Map类中存储的键-值对通过键来标识,所以键值不能重复
Object put(Object key,Object value);
Object get(Object key);
Object remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
void putAll(Map t);
void clear();
Map底层实现:数组+链表
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test01 {
public static void main(String[] args){
Map map = new HashMap();
map.put("id", 1201);
map.put("name", "张三");
map.put("salary", 3050);
map.put("department", "项目部");
map.put("heirDate", "2002-10");
Map map2 = new HashMap();
map2.put("id", 1202);
map2.put("name", "李四");
map2.put("salary", 3500);
map2.put("department", "教学部");
map2.put("heirDate", "2003-10");
Map map3 = new HashMap();
map2.put("id", 1203);
map3.put("name", "王五");
map3.put("salary", 3300);
map3.put("department", "研发部");
map3.put("heirDate", "2003-10");
List<Map> list = new ArrayList<Map>(); //泛型,加了Employee后只能放Employee的对象
list.add(map);
list.add(map2);
list.add(map3);
printEmpName(list);
}
public static void printEmpName(List<Map> list){
for(int i=0;i<list.size();i++){
Map tempMap = list.get(i);
System.out.println(tempMap.get("id")+"--"+tempMap.get("name")
+"--"+tempMap.get("salary")+"--"+tempMap.get("department")
+"--"+tempMap.get("heirDate"));
}
}
}
Set接口
Set接口是Collection接口的子接口,Set接口没有提供额外的方法,Set接口的特性是容器类中的元素没有顺序的,而且不可以重复。
Set容器可以与数学中“集合”的概念相对应。
J2SDK API中所提到的Set容器类有HashSet,TreeSet等。
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Test02 {
public static void main(String[] args){
Set set = new HashSet();
set.add("高1");
set.add("高2");
set.add("高3");
//通过迭代器遍历list
Iterator iter = set.iterator(); //迭代器
while(iter.hasNext()){ //while循环
// for(Iterator iter = set.iterator();iter.hasNext();){ //for循环
String str = (String) iter.next();
System.out.println(str);
}
}
}
Iterator接口
所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接对象。
Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。
Iterator接口定义了如下方法:
boolean hasNext(); //判断是否有元素没有被遍历
Object next(); //返回游标当前位置的元素并将游标移动到下一个位置
void remove(); //删除游标左面的元素,在执行完next之后该操作只能执行一次
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test03 {
public static void main(String[] args){
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//通过迭代器遍历list
for(Iterator iter = list.iterator();iter.hasNext();){ //for循环
String str = (String) iter.next();
System.out.println(str);
iter.remove(); //删除
}
System.out.println(list.size()+"***************");
}
}