- 可以动态保存多个对象,使用比较方便
- 提供了一系列方便的操作对象的方法:add,set,get,remove
- 使用集合添加删除元素的代码更加简洁
集合主要是两组(单列集合,双列集合)
Collection接口有两个重要的子接口List,Set,他们的实现子类都是单列集合
Map实现的子类是双列集合,存放的是Key-Value
List list = new ArrayList();
list.add("jack");//添加元素
list.remove(0);//删除第一个元素
list.contains("jack")//查找元素是否存在返回True 或者 False
list.size()//获取元素个数
list.isEmpty()//判断是否为空
list.clear();//清空元素
collection接口遍历元素的方式-01-使用Iterator(迭代器)
Iterator iterator = col.iterator();
while (iterator.hasNext()) {//判断是否还有数据
//返回下一个元素,类型是 Object
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
List集合类中的元素是有序的,(添加元素的顺序和取出元素的顺序是一样的),且可以重复
List集合类中的每个元素都都有对应的顺序索引,
List集合类中的每个元素都对应一个整数型序号记载其在其中的位置,可以根据序号取出元素
List接口的实现类:ArrayList,LinkedList,Vector
常用方法
List list = new ArrayList();
list.add("张三丰");
list.add(1, "寻");//在 index = 1 的位置插入一个对象
list.get(int index)//获取指定 index 位置的元素
list.indexOf("tom")//返回 tom 在集合中首次出现的位置
list.lastIndexOf(Object obj)//返回 obj 在当前集合中末次出现的位置
list.remove(int index)//移除指定 index 位置的元素,并返回此元素
list.set(int index, Object ele)//设置指定 index 位置的元素为 ele , 相当于是替换.
list.subList(int fromIndex, int toIndex)//返回从 fromIndex 到 toIndex 位置的子集合
遍历方式
Iterator ite = col.iterator();
while(ite.hasNest()){
object obj = ite.next();
}
---
for(Object o : col){
}
---
for(int i = 0;i<list.size();i++){
}
Vector底层是一个对象数组
Vector是线程同步的,即线程安全
LinkedList底层实现了双向链表和双端队列
可以添加任意元素(元素可以重复),包括null
线程不安全,没有实现同步
LinkedList中维护了两个属性,first和last分别指向首节点和尾节点
- 无序(添加和取出元素的顺序不一样),没有索引
- 不允许包含重复元素,最多包含一个null
set接口的遍历可以使用迭代器和增强for循环,不可以使用索引
HashSet实现了set接口
HashSet实际上是HashMap
可以存放null,但是只可以存放一个
//1. Map 与 Collection 并列存在。用于保存具有映射关系的数据:Key-Value(双列元素)
//2. Map 中的 key 和 value 可以是任何引用类型的数据,会封装到 HashMap$Node 对象中
//3. Map 中的 key 不允许重复,原因和 HashSet 一样,前面分析过源码. //4. Map 中的 value 可以重复
//5. Map 的 key 可以为 null, value 也可以为 null ,注意 key 为 null,只能有一个,value 为 null ,可以多个
//6. 常用 String 类作为 Map 的 key
//7. key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到对应的 value
遍历方式
//(1) 增强 for
System.out.println("-----第一种方式-------");
for (Object key : keyset) {
System.out.println(key + "-" + map.get(key));
}
//(2) 迭代器
System.out.println("----第二种方式--------");
Iterator iterator = keyset.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key + "-" + map.get(key));
}