集合:可以保存一组元素
java.util.Collection接口。Collection是所有集合的顶级接口,里面规定了所有集合都应当具备的操作。
常见的两个子接口:
java.util.List:可重复集且有序。
java.util.Set:不可重复集。
重复指元素是否允许存放重复元素,重复的判断是更具元素自身的equals方法决定的。
Collection c = new ArrayList();
c.add("one");//向集合中存放一个元素、boolean add(E e)添加成功返回值为true
int size = c.size();//返回当前集合的元素个数
boolean isEmpty = c.isEmpty();//判断是否为一个空元素
c.clear();//void clear()、清空集合
contains:包含
remove:删除
Collection c = new ArrayList();
c.add(new Point(1,2));
c.add(new Point(1,2));
c.add(new Point(3,4));
/*
集合重写了toString方法。格式为:
元素1.toString(),元素2.toString(),.....
*/
Point p = new Point(1,2);//Point类重写了toString和equals方法。
/*
boolean contions(Object o)判断当前集合是否包含给定元素
判断依据是该元素是否与集合现有元素存在equals方法比较为true
的情况,存在即包含。
*/
bollean contains = c.contains(p);
c.remove(p);//删除元素也是删除equals比较为true的元素,对于List而言,重复元素只会删除一次。
集合只能保存引用元素,保存的是元素的引用(地址)
Point p = new Point(1,2);
Collection c = new ArrayList();
c.add(p);
System.out.println("p:"+p);//(1,2)
System.out.println("c:"+c);//[(1,2)]
p.setX(2);
System.out.println("p:"+p);//(2,2)
System.out.println("c:"+c);//[(2,2)]
集合之间的操作
Collection c1 = new ArrayList();
c1.add("java");
c1.add("c++");
c1.add(".net");
c1.add("android");
Collection c2 = new HashSet();
c2.add("android");
c2.add("ios");
/*
boolean addAll(Collection c)
将给定集合中所有元素添加到当前元素中。添加后当前集合发生了改变则返回true。
*/
c2.addAll(c1);
System.out.println("c1:"+c1);//[java, c++, .net, android]
System.out.println("c2:"+c2);//[c++, java, android, .net, ios]
Collection c3 = new ArrayList();
c3.add("java");
c3.add("ios");
c3.add("php");
/*
boolean containsAll(Collection c)
判断当前集合是否包含给定集合中的所有元素,全部包含则返回true。
*/
boolean contains = c2.containsAll(c3);
System.out.println("包含所有:"+contains);//包含所有:false
/*
取交际,仅保留当前集合中与给定集合的共有元素。
*/
c2.retainAll(c3);
/*
删交际,将当前集合中与给定集合的共有元素删除
*/
c2.removeAll(c3);
System.out.println("c2:"+c2);//[c++, android, .net]
System.out.println("c3:"+c3);//[java, ios, php]