\
说明:集合的知识点大部分在于操作集合中数据的方法和不同类型集合的原理及其区别
集合:集合是用于存储对象的长度可变的容器,集合类对象存在于堆内存中,集合中存储的是元素对象的地址,不是元素对象本身。
一,Collection接口
Collection接口作为集合体系的根接口,接口中包含了Collection集合体系大部分常见方法。
方法一:
add(E e):添加元素,
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//打印集合
System.out.println(al);
}
}
运行结果;
[aaa, bbb, ccc]
方法二:
addAll(Collection c):将集合c中所有元素全部添加到该集合中。
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//创建集合al2
Collection al2=new ArrayList();
//为集合al2添加元素
al2.add("ddd");
al2.add("eee");
//将集合al2中所有元素全部添加到al中
al.addAll(al2);
//打印集合al
System.out.println(al);
}
}
运行结果;
[aaa, bbb, ccc, ddd, eee]
方法三:
remove(Object o):删除集合中指定元素
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
System.out.println("删除指定元素前集合为:"+al);
al.remove("bbb");
System.out.println("删除指定元素后集合为:"+al);
}
}
运行结果:
删除指定元素前集合为:[aaa, bbb, ccc]
删除指定元素后集合为:[aaa, ccc]
方法四:
removeAll(Collection c):移除该集合与集合c中相同的元素,集合c本身不变
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//创建集合al2
Collection al2=new ArrayList();
//为集合al2添加元素
al2.add("bbb");
al2.add("ccc");
System.out.println("删除元素前集合为:"+al);
//移除集合al中与集合al2所有相同的元素
al.removeAll(al2);
System.out.println("删除元素后集合为:"+al);
}
}
运行结果;
删除元素前集合为:[aaa, bbb, ccc]
删除元素后集合为:[aaa]
方法五:
clear():清楚集合中所有元素
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
System.out.println("清空元素前集合为:"+al);
//清空集合元素
al.clear();
System.out.println("清空元素后集合为:"+al);
}
}
运行结果:
清空元素前集合为:[aaa, bbb, ccc]
清空元素后集合为:[]
方法六:
size():返回集合中元素个数
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
System.out.println(al.size());//打印集合中元素个数
}
}
运行结果:
3
方法七:
contains(Object o):判断集合中是否包含指定元素o;若存在则返回true。
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//判断集合中是否包含指定元素
System.out.println(al.contains("bbb"));
}
}
运行结果:
true
方法八:
isEmpty():判断集合是否为空,若为空则返回true;
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//判断集合是否为空
System.out.println(al.isEmpty());
}
}
运行结果;
false
方法九:
retainAll(Collection c):保留该集合与指定集合相同的部分。
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//创建集合al2
Collection al2=new ArrayList();
//为集合al2添加元素
al2.add("ccc");
al2.add("ddd");
//取两集合交集
al.retainAll(al2);
System.out.println(al);
}
}
运行结果:
[ccc]
方法十:
iterator():创建一个该集合的迭代器;
迭代器包含以下方法:
hasNext():判断指针后集合是否还有元素;
next():返回下一个元素;
remove();删除当前元素
迭代器可以对集合中元素进行遍历。
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
Collection al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//创建集合的迭代器
Iterator it=al.iterator();
//使用迭代器对集合进行遍历
while(it.hasNext()){
Object obj=it.next();
//删除集合中指定元素
if(obj.equals("bbb"))
it.remove();
System.out.println(obj);
}
}
}
运行结果:
aaa
bbb
ccc
二,List接口
List接口是Collection接口的重要子类,List接口的常见子类有ArrayList,LinkedList,Vector等,下面介绍List接口特有的常见方法;
方法一:
add(int index,E element):在集合的指定位置添加指定元素;
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//在集合指定位置添加元素
al.add(0,"qqq");
System.out.println(al);
}
}
运行结果:
[qqq, aaa, bbb, ccc]
方法二:
addAll(int index,Collection c):在集合的指定位置添加另一集合c的所有元素
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//创建集合al2
List al2=new ArrayList();
//为集合添加元素
al2.add("xxx");
al2.add("yyy");
al2.add("zzz");
//将集合al2中所有元素全部添加到集合al的指定位置中
al.addAll(1,al2);
//打印集合al
System.out.println(al);
}
}
运行结果:
[aaa, xxx, yyy, zzz, bbb, ccc]
方法三:
get(int index):返回集合中指定位置的元素
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//返回集合中指定位置的元素
System.out.println(al.get(2));
}
}
运行结果;
ccc
方法四:
indexOf(Object o):返回集合中首次出现指定元素的位置,若集合中不存在指定元素,则返回-1;
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
//获取指定元素在集合中的位置
System.out.println(al.indexOf("bbb"));
}
}
运行结果;
1
方法五;
remove(int index):删除集合中指定位置的元素;
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
al.add("ddd");
//删除元素前
System.out.println("删除元素前集合:"+al);
//删除集合中指定位置的元素
al.remove(2);
//删除元素前
System.out.println("删除元素后集合:"+al);
}
}
运行结果:
删除元素前集合:[aaa, bbb, ccc, ddd]
删除元素后集合:[aaa, bbb, ddd]
方法六:
set();用指定元素替换集合中指定位置的元素
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
al.add("ddd");
System.out.println("操作前集合:"+al);
//用指定元素替换集合中指定位置的元素
al.set(2,"xyz");
System.out.println("操作后集合:"+al);
}
}
运行结果;
操作前集合:[aaa, bbb, ccc, ddd]
操作后集合:[aaa, bbb, xyz, ddd]
方法七:
subList(int fromIndex,int toIndex);获取集合的一个子集,
注:调用该方法后原集合内元素不变。该方法会生成一个新的集合。
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
al.add("ddd");
al.add("eee");
System.out.println("al集合:"+al);
//获取指定集合的子集
List al2=al.subList(1,3);
System.out.println("al集合子集al2:"+al2);
}
}
运行结果:
al集合:[aaa, bbb, ccc, ddd, eee]
al集合子集al2:[bbb, ccc]
方法八:
listIterator():返回迭代器LIstIterator.
三,Listiterator接口。
ListIterator接口为List集合特有的迭代器,Listiterator接口中有多个可以操作集合的方法。
方法一:
add() 将指定的元素插入列表。
方法二;
set() 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。
方法三:
next() 返回列表中的下一个元素。
方法四:
remove() 从列表中移除由 next 或 previous 返回的最后一个元素。
方法五:
hasNext() 正向遍历列表,如果列表迭代器有多个元素,则返回 true
方法六:
previous() 返回列表中的前一个元素。
方法七:
nextIndex() 返回对 next 的后续调用所返回元素的索引。
方法八:
hasPrevious() 逆向遍历列表,如果列表迭代器有多个元素,则返回 true。
方法九:
previousIndex() 返回对 previous 的后续调用所返回元素的索引。
实例:
import java.util.*;
public class Test {
public static void main(String[] args){
//创建集合al
List al=new ArrayList();
//为集合添加元素
al.add("aaa");
al.add("bbb");
al.add("ccc");
al.add("ddd");
al.add("eee");
//打印操作前集合
System.out.println("操作前集合为:"+al);
//创建ListIterator迭代器
ListIterator li=al.listIterator();
while(li.hasNext()){
Object obj=li.next();
if(obj.equals("bbb"))
li.add("xxx");
if(obj.equals("ddd"))
li.set("yyy");
}
//打印操作后集合
System.out.println(al);
//逆向遍历集合
while(li.hasPrevious()){
Object obj=li.previous();
System.out.println("第"+li.nextIndex()+"个元素是:"+obj);
}
}
}
运行结果:
操作前集合为:[aaa, bbb, ccc, ddd, eee]
[aaa, bbb, xxx, ccc, yyy, eee]
第5个元素是:eee
第4个元素是:yyy
第3个元素是:ccc
第2个元素是:xxx
第1个元素是:bbb
第0个元素是:aaa