集合中的方法
addAll removeAll retainAll
public class Demo01 {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
//测试addAll
Collection c1=new ArrayList<>();
c1.add("a");
c1.add("b");
c1.add("c");
Collection c2=new ArrayList<>();
c2.add("a");
c2.add("b");
c2.add("c");
c2.add("d");
//retainAll
//返回是两个集合的交集
//返回值 是看 调用者是否发生变化
c1.retainAll(c2);
boolean rel1 = c1.retainAll(c2);
System.out.println(c1);
System.out.println(c2);
System.out.println(rel1);
//添加方法
//把c2当做一个元素 添加到c1中
//c1.add(c2);
//System.out.println(c1);
//addAll
//把c2中的每一个元素 添加c1中
c1.addAll(c2);
//removeAll
//删除是 调用集合的元素
boolean rel = c1.removeAll(c2);
System.out.println(c1);
System.out.println(c2);
System.out.println(rel);
}
}
迭代器
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代 表容器中的确定的地址。
public static void main(String[] args) {
Collection c=new ArrayList<>();
//实际上 内部有个指针
//调用next 实际上把指针向下移动一位
//调用几次挪动几位
c.add("a");
c.add("b");
c.add("c");
c.add("d");
//从集合中 获取迭代器
Iterator iterator=c.iterator();
//判断是否有下一个元素
boolean rel = iterator.hasNext();
System.out.println(rel);
//如果有下一个元素
if (rel) {
//获取集合中元素
Object next=iterator.next();
System.out.println(next);
}
}
迭代器遍历集合
public class Demo01 {
public static void main(String[] args) {
Collection c=new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
//获取迭代器
Iterator iterator = c.iterator();
//循环遍历
while (iterator.hasNext()) {
//注意:循环中 只调用一次next方法
Object next = iterator.next();
//打印集合中的元素
System.out.println(next);
}
}
}
添加元素
add(int index,Object obj)
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
//添加(不要超出集合的元素个数 Size)
list.add(0, "x");
System.out.println(list);
设置元素
set(index,obj)
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("c");
//设置元素(替换该位置的元素)
list.set(0, "w");
System.out.println(list);
获取下标处的元素
get(int index)
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("c");
//获取下标处的元素
Object object = list.get(0);
System.out.println(list.get(0));
删除元素
remove(int index) List list=new ArrayList();
list.add("a");
list.add("b");
list.add("c");
//删除(返回的是删除的元素)
Object obj = list.remove(0);
System.out.println(obj);
利用get方法 遍历集合
for (int i = 0; i < args.length; i++) {
//打印元素
System.out.println(list.get(i));
}
Vector
//创建一个Vector
//遍历方法
Vector vector=new Vector();
vector.addElement("a");
vector.addElement("b");
vector.addElement("c");
vector.addElement("d");
//遍历这个集合
Enumeration elements=vector.elements();
while (elements.hasMoreElements()) {
System.out.println(elements.nextElement());
}
addFirst
public static void main(String[] args) {
LinkedList linkedList=new LinkedList();
linkedList.add("z");
linkedList.add("x");
linkedList.addFirst("a");
System.out.println(linkedList);
}//最终打印结果为[a,z,x]
addLast
public static void main(String[] args) {
LinkedList linkedList=new LinkedList();
linkedList.add("z");
linkedList.add("x");
linkedList.addLast("a");
System.out.println(linkedList);
}//最终打印结果为[z,x,a]
ArrayList特点
查询快 增删慢
数组实现
查询 按角标查询
增删时 把要删除或增加的元素后面的所有元素
向前移动或者向后移动
LinkedList特点
查询慢 增删快
链表实现
查询:
先看这个元素 离哪一端近 就从那一端开始
一个一个向后或向前寻找 直到找到为止
增加:
链表的元素 要保证能找到自己的上一个和下一个元素
需要保存上一个和下一个元素的地址
只要保存了地址 就能找到元素 就相当于插入到了链中
后面的元素 不会发生改变
两个集合如何选择?
增删多 链表
查询多 数组