顶级接口Collection
无序、允许重复
public interface Collection<E> extends Iterable<E>一般说Collection是集合框架的顶级接口,但是事实上并不是顶级接口提供的方法:
int size();获取集合中的元素个数 区分容积和元素个数
boolean isEmpty() 判断集合中的元素个数是否为0
注意:只判断是否没有元素,但是并不判断集合对象是否为null
boolean contains(Object o)用于判断集合中是否包含对象
boolean add(Object o)用于向集合中追加元素o,成功true失败falseboolean remove(Object o)删除集合中的指定元素o,成功true失败false
Iterator<E> iterator();获取迭代器,通过迭代器遍历集合中的每个元素
Object[] toArray();将集合转换为数组
void clear();删除集合中的所有元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
public class Test2 {
public static void main(String[] args) {
Collection cc=new ArrayList();
cc.add(123);
cc.add("bbbb");
cc.add(new Date());
System.out.println(cc.size());
System.out.println(cc.isEmpty());
System.out.println(cc.contains("bbbb"));
System.out.println(cc.remove(123));
System.out.println(cc.contains("123"));
System.out.println(cc.size());
}
}
如何判断删除的元素相等
equals
定义equals方法可以依赖于IDE工具自动生成
@Override
public boolean equals(Object obj) {
// 用户自定义的比较规则
if (this == obj)
return true;
if (obj == null) //当前对象不可能为null,否则空指针异常
return false;
if (getClass() != obj.getClass()) // 类型判断。一个类只能加载一次
return false;
A1 other = (A1) obj;
//调用Objects工具类中的方法进行相等判断
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
return Objects.equals(id, other.id) && Objects.equals(name, other.name);
}==和equals
-==比较的是对象的引用值
-equals用户自定义比较规则。如果没有自定义equals方法,则从Object类中继承得到方法
public boolean equals(Object obj) {
return (this == obj);
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
Collection cc = new ArrayList();
A1 aa = new A1();
cc.add(aa);
cc.add(aa);
System.out.println(cc.size());
System.out.println(cc.remove(aa));
System.out.println(cc.size());
System.out.println(cc.remove(new A1()));
System.out.println(cc.size());
}
}
class A1 {
private Long id;
private String name;
@Override
public int hashCode() {
return Objects.hash(id, name);
}
@Override
public boolean equals(Object obj) {
//用户自定义的比较规则
if (this == obj)
return true;
if (obj == null)//当前对象不可能为null,否则空指针异常
return false;
if (getClass() != obj.getClass())//类型判断。一个类只能加载一次
return false;
A1 other = (A1) obj;
//调用Objects工具类中的方法进行相等判断
/*
* public static boolean equals(Object a, Object b) {
* return (a == b) || (a != null && a.equals(b));
* }
*/
return Objects.equals(id, other.id) && Objects.equals(name, other.name);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}