当前位置: 首页 > news >正文

顶级接口Collection

顶级接口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;
	}

}

相关文章:

  • ERP采购管理 金蝶
  • 【Linux】系统安装
  • 微服务项目:尚融宝(9)(后端接口:统一返回结果)
  • 『每日算法 · 基础知识篇』备战面试,坚持算法 第一话——对数器!
  • 【开卷数据结构 】2-3树
  • C/C++教程 从入门到精通《第二十一章》——Qt界面开发
  • STM32学习笔记:读写内部FLASH
  • Git 实战(三) | Github 必会高频基础命令与 IDE 的 Git 集成
  • Docker 镜像构建可以分享的快乐
  • ADC_内部电路Rsh和Csh和转换速率Tconv以及频率fs
  • Hive的基本操作
  • vue、vscode格式规范prettier、eslint、git commit
  • Revit中门窗如何使用遮罩区域?及CAD生成门窗?
  • windows下使用docker
  • c# iot .net 6 树莓派 读取光敏传感器四针+模拟转数字模块 代码实例
  • [deviceone开发]-do_Webview的基本示例
  • CSS 专业技巧
  • Druid 在有赞的实践
  • HashMap ConcurrentHashMap
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java基本数据类型之Number
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • js数组之filter
  • laravel5.5 视图共享数据
  • LeetCode18.四数之和 JavaScript
  • mysql_config not found
  • nfs客户端进程变D,延伸linux的lock
  • PHP 小技巧
  • SOFAMosn配置模型
  • Spring-boot 启动时碰到的错误
  • Sublime text 3 3103 注册码
  • Wamp集成环境 添加PHP的新版本
  • 从零搭建Koa2 Server
  • 对象管理器(defineProperty)学习笔记
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 回顾2016
  • 你不可错过的前端面试题(一)
  • 前端知识点整理(待续)
  • 悄悄地说一个bug
  • 如何编写一个可升级的智能合约
  • 算法-图和图算法
  • 微信支付JSAPI,实测!终极方案
  • 小程序开发之路(一)
  • 用mpvue开发微信小程序
  • 怎么将电脑中的声音录制成WAV格式
  • 中文输入法与React文本输入框的问题与解决方案
  • k8s使用glusterfs实现动态持久化存储
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 交换综合实验一
  • ​插件化DPI在商用WIFI中的价值
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (2020)Java后端开发----(面试题和笔试题)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师