顶级接口Collection

本文详细介绍了Java Collection接口,包括其作为集合框架顶级接口的角色,提供的重要方法如size(), isEmpty(), contains(), add(), remove(), iterator(), toArray(), clear()等。讨论了equals()和hashCode()的使用,以及在自定义equals规则时的实践。
摘要由CSDN通过智能技术生成

顶级接口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失败false

        boolean 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;
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值