为了存储多个数据,或对象的引用变量
集合类主要负责保存、盛装其他数据,所以也称为容器类。
集合类有两个派生接口:Collection、Map
Collection
Collection接口中的方法
Set、List、Queue三种集合都是来自于父接口,所以C的方法可以用来操作三种集合。
boolean add(Object o):向集合中添加元素;
boolean addAll(Collection c):把集合c里所有元素添加到指定集合中;
void clear():清除集合所有元素,集合长度变成0;
boolean contains(Object o):返回该集合中是否包含指定元素;
boolean containsAll(Collectionc):返回集合中是否包含集合c里的所有元素;
boolean isEmpty():返回集合是否为空。为0返回true,否则返回false;
Iterator iterator():返回一个iterator对象,用于遍历集合里的元素;
boolean remove(Objecto):删除集合中的指定元素o,当集合中包含了一个或多个元素o时,只删除第一个符合条件的元素,返回true;
boolean removeAll(Collectionc):删除集合中符合集合c包含的所有元素(从集合中减掉集合c);
boolean retainAll(Collectionc):删除集合中集合c不包含的元素(除集合c外,其他集合都删除,与c集合的交集);
int size():返回集合中元素个数;
Object[] toArray():把集合转换成数组,所有的集合元素变成对应的数组元素;
集合是个容器,提供以上增删清空、判空方法,能够更好理解集合的作用。详细信息参考JavaAPI文档,不用生硬记牢,程序员的记忆都在手边。
示例代码:
package javaCollection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
/**
* 操作集合方法
* @author bobo
*/
public class CollectionTest {
/*
* 操作集合方法
*/
public static void main(String[] args) {
//List
Collection b=new ArrayList();
Collection c=new ArrayList();
//添加元素add
//虽然集合中不能放基本数据类型的值,但是Java支持自动装箱;
b.add(8);
b.add("奥特曼");
c.add("小怪兽");
c.add(8);
c.add(8);
c.add(7);
c.addAll(b);
System.out.println("现在集合中有元素"+c.size()+"个");
//删除元素
c.remove(8);
System.out.println("现在集合中有元素"+c.size()+"个");
System.out.println("c集合中是否包含“小怪兽”字符串"+c.contains("小怪兽"));
System.out.println("c集合全部元素"+c);
System.out.println("=====================分割线=====================");
//Set
Collection person=new HashSet();
person.add("孙悟空");
person.add("唐三藏");
System.out.println("c集合是否包含person集合?"+c.containsAll(person));
person.add("小怪兽");
c.removeAll(person);
System.out.println("c集合全部元素"+c);
System.out.println("=====================分割线=====================");
c.clear();//清空,长度变为0
System.out.println("c集合全部元素"+c);
//元素的交集
c.add("小怪兽");
c.add(8);
c.add(8);
c.add(7);
person.add("小怪兽");
person.add("孙悟空");
person.add("唐三藏");
person.retainAll(c);//person集合和c集合的交集
System.out.println("person集合的元素"+person);
}
}
操作集合:
c集合是ArrayList,Person是HashSet,虽然实现类不同,但是都当成Collection来使用
最后的结果如下:
代表无序、不可重复的集合;添加进去的数据,不知道元素的顺序,只能通过数据元素本身查找,也就必须保证了元素不能出现重复。
List(子接口)
代表有序、重复的集合;list像是个数组,他记录了每个元素添加进去的顺序,给每个元素一个索引,且list长度可变,所以它里面的数据是可以重复的。
Queue
队列集合的实现,有些类似于List。
Map
代表映射关系的集合,Map的实现类中都是保存Key-value 对。Map中的key不可重复,key用于标识集合中每项数据。我们可以通过key值获取map中的数据。
三种类型比较总结
1、set访问,靠元素本身,必须保证不重复;
2、list有索引,像数组,有序且可重复;
3、map是key-value,通过key访问value;