java集合框架
java.util.Collection接口,java中所有的集合都实现了该接口,集合像数组一样,可以保存一组元素,并且对于元素的操作全部封装成了方法,使用便捷
集合提供了多种不同的数据结构
Collection下面两个常见的子类型
java.util.List接口:线性表,是一个可重复且有序的集合
java.util.Set接口:不可重复的集合
这里重复指的是元素是否重复,而判定重复的标准是依靠元素equals方法比较的结果,equals方法返回true则为重复
public class CollectionDemo {
public static void main(String[] args) {
Collection c=new ArrayList();
/*
集合只能存放引用类型的
数字则通过封装成引用类型存入
*/
c.add(Integer.valueOf(123));
c.add("one");
System.out.println(c);
System.out.println("当前集合元素个数:"+c.size());
/**
* c==null
* boolean isEmpty();
* 判断当前集合是否为空集(当且仅当size=0时,为空集)
*/
boolean isEmpty=c.isEmpty();
System.out.println("是否为空集");
/**
清空集合
*/
c.clear();
}
}
使用实例作为当前集合元素测试集合相关操作
引用的类型
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Point{" +
"x=" + x +
", y=" + y +
'}';
}
}
受元素的equals方法影响的集合操作
创建集合:
Collection c =new ArrayList();
c.add(new Point(1,2));
c.add(new Point(23,2));
c.add(new Point(112,21));
c.add(new Point(123,2));
集合重写了toString方法,格式如下:
[元素1.toString(), 元素2.toString(), 元素3.toString(), ...]
System.out.println(c);
Point p =new Point(3,4);
boolean contains(Object o)
判断当前集合是否包含给定元素,判断依据是给定元素是否与集合元素存在equals比较为true的情况
boolean b = c.contains(p);
System.out.println("是否包含:"+b);
boolean remove(Object o)
删除集合中比较为true的元素,若存在相同元素,则只删一个
c.remove(p);
System.out.println(c);
集合存放的是元素的引用
public class CollectionDemo3 {
public static void main(String[] args) {
Collection c = new ArrayList();
Point p = new Point(1,2);
c.add(p);
System.out.println("p:"+p);
System.out.println("c:"+c);
p.setX(2);
System.out.println("p:"+p);
System.out.println("p:"+p);
}
}