2、Collections操作(自定义类)的各种实现

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、排序(sort)

要想实现排序,必须实现compare方法,这样Collection才知道是怎样的排序规则。普通的数据类型,比如:int 、String、long等都已经实现了Comparable接口,这个接口里面有两个抽象方法:compare() 和 equals(),而equals在object中定义的,所以所有类都会实现了这个方法,因而就只需要实现compare()即可。所以自定义类也需要自己实现Comparable接口,自己重写里面的compareTo方法

  • 1、bean实现comparable接口,重写compareto方法

      public class CompareTest {public static void main(String[] args) {User user = new User();user.age = 11;User user1 = new User();user.age = 5;User user2 = new User();user.age = 8;User user3 = new User();user.age = 3;List<User> users = new ArrayList<User>();users.add(user);users.add(user1);users.add(user2);users.add(user3);System.out.println(users);Collections.sort(users);System.out.println(users);}}class User implements Comparable<User> {public String name;public int age;public String addr;public String sortType;[@Override](https://my.oschina.net/u/1162528)public int compareTo(User user) {return this.age > user.age ? 1 : -1;   //升序排序升序升序升序//return this.age > user.age ? -1 : 1;   //降序降序降序降序降序}}
    
  • 2、直接在Collections.sort中传入一个匿名函数

      Collections.sort(fileList, new Comparator<File>() {[@Override](https://my.oschina.net/u/1162528)public int compare(File leftFile, File rightFile) {return leftFile.lastModified() > rightFile.lastModified() ? -1 : 1;}});
    

compareTo规则总结

返回1表示交换,返回0或者-1表示不交换,所以

int、long、float等字段使用=>return this.age > user.age ? 1 : -1;  //升序return this.age > user.age ? -1 : 1;  //降序String类型字段使用=>return this.name.compareTo(user.name);  //升序return -this.name.compareTo(user.name);  //降序

2、是否存在的判断(contains,containsAll)

这个方法调用自定义类中的equals方法进行比较,所以需要重写equals方法

public class ContainsTest{public static void main(String[] args) {UserBean userBean1 = new UserBean("1");UserBean userBean2 = new UserBean("1");LinkedList<UserBean> userBeenList = new LinkedList<>();userBeenList.add(userBean1);System.out.println(userBeenList.contains(userBean2));}}class UserBean {private String personId;public UserBean(String personId){this.personId = personId;}public String getPersonId() {return personId;}public void setPersonId(String personId) {this.personId = personId;}[@Override](https://my.oschina.net/u/1162528)public boolean equals(Object obj){  //这里一定是Object对象,因为equals方法是在Object那里继承过来的,//方法的参数要和父类一致,否则不算重写if(obj instanceof UserBean){UserBean otherUser = (UserBean) obj;if (this.personId == otherUser.personId) {return true;}else {return false;}}return false;}
}

转载于:https://my.oschina.net/liufukin/blog/2221785

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android多接口请求参数,okhttp3 使用json参数post方式请求接口数据(android)

1. 谷歌自带的json不支持像map一样直接put字符串进去&#xff0c;所以先导入阿里的json包2. 创建json对象&#xff0c;并且放入所要请求的参数 //登录 private void loginRequest() { String url Contents.url"login"; JSONObject json new JSONObject(); json.put…

由浅入深,一文掌握NGINX知识文集

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Python语法特点如注释规则、代码缩进、编码规范等

在Python中&#xff0c;通常包括3种类型的注释&#xff0c;分别是单行注释、多行注释和中文编码声明注释。单行注释在Python中&#xff0c;使用“#”作为单行注释的符号。从符号“#”开始直到换行为止&#xff0c;“#”后面所有的内容都作为注释的内容&#xff0c;并被Python编…

修改android.jar教程,Android修改jar包文件

1、Android studio中新建java文件&#xff0c;取和将要修改的文件相同的文件名&#xff0c;把class文件中代码复制过去&#xff0c;修改需要改动的代码2、新建txt文件&#xff0c;将新建的Java文件按照依赖关系将路经添加到新建的txt文件中&#xff0c;被依赖的放在最前面(ps:此…

win10安装TortoiseGit

TortoiseGit 是Git的可视化工具。所以前提是已经安装了Git&#xff0c;安装很简单一路next。 下载地址&#xff0c;百度搜“TortoiseGit”&#xff0c;一般是第一个。 目前地址是&#xff1a;https://tortoisegit.org/download/ 如果打不开&#xff0c;可以进入腾讯软件中心…

Python3.8安装 jupyter报错 NotImplementedError

报错如下&#xff1a; 原因&#xff1a; 是由于 python3.8 asyncio 在 windows 上默认使用 ProactorEventLoop 造成的&#xff0c;而不是之前的 SelectorEventLoop。jupyter 依赖 tornado&#xff0c;而 tornado 在 window 上需要使用 SelectorEventLoop&#xff0c;所以产生这…

浅析Nginx 正向代理与反向代理

1、正向代理和反向代理的概念 无论是正向代理&#xff0c;还是反向代理&#xff0c;说到底&#xff0c;就是代理模式的衍生版本罢了。我们都学习过代理设计模式&#xff0c;都知道代理模式中有代理角色和被代理角色&#xff0c;为什么这么说&#xff0c;因为这两个角色对于我们…

pycharm 安装 jupyter

jupyter可以像笔记一样&#xff0c;在学习和整理思路时很好。 使用的python是3.7.5版本 windows安装步骤&#xff1a; cmd 再修改下pip的源&#xff0c;选择国内&#xff0c;这样快。 国内pip源: 阿里云 https://mirrors.aliyun.com/pypi/simple/ 广东 豆瓣https://pypi…

或成为性能宠儿,荣耀8x Max 骁龙660版首销在即

今天已经是十一假期的最后一天了&#xff0c;假期马上就要结束了&#xff0c;虽然这有点让人遗憾&#xff0c;但是接下来的好消息让很多人的心情好了不少&#xff0c;那就是10月8日荣耀8x Max骁龙660版本就要在全平台开售了&#xff0c;这恐怕是节后最开心的事情了。此前&#…

读书笔记-说服力 让你的PPT会说话

说服力&#xff1a;让你的PPT会说话张志 包翔 刘俊前言优秀的幻灯片是内容和形式的完美统一&#xff0c;掌握配色排版特效的技术也很重要&#xff0c;不过对大部分人&#xff0c;这些基础操作都已经初步掌握了。要进一步提高&#xff0c;技术不是制作高水平PPT的主要障碍&#…

idea lombok 插件安装

下载了guns源代码&#xff0c;idea提示很多方法不存在。后来发现是没有安装 lombok 插件。 lombok让java代码更加简洁&#xff0c;具体介绍&#xff1a;https://www.cnblogs.com/heyonggang/p/8638374.html 安装&#xff1a; File---setting---plugins

怎么把pdf转换为html,如何将PDF转换成HTML网页格式呢?

原标题&#xff1a;如何将PDF转换成HTML网页格式呢&#xff1f;现在很多在校程序学生们时常在思考怎么对HTML网页进行编译以呈现出想要展现的内容。但是HTML犹如我们外语学习一样&#xff0c;一个网页有很多的HTML文件&#xff0c;超文本标记语言文件以.htm(磁盘操作系统DOS限制…

Epson C1100报错“Service Req E511”的处理方法

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/renyuansoft/blog/2231623

guns企业高级单体版(前后端不分离)运行启动

单体版分前后端分离与不分离&#xff0c;这里分享前后端不分离的搭建方法 访问guns官网https://www.stylefeng.cn&#xff0c;登录后可查看教程&#xff08;账号密码见群公告&#xff09; 官方教程不是最新的&#xff0c;有些地方写的不是很清楚 第一步 确认环境 JDK1.8 M…

华为手机应用鸿蒙os,华为手机内置应用逐渐向鸿蒙 OS 靠拢

IT 之家 3 月 21 日消息 华为在去年 12 月 16 日举行 HarmonyOS 2.0 手机开发者 Beta 活动。现场正式发布了 HarmonyOS 2.0 手机开发者 Beta 版本。同时&#xff0c;HarmonyOS 2.0 手机开发者 Beta 开启公测。华为表示&#xff0c;HarmonyOS 是面向万物互联时代的全场景分布式操…

分布式数据库中间件使用经验分享

最近公司新项目使用了华为云的DDM分布式数据库中间件服务&#xff0c;通过一段的时间的使用感觉还不错。近段时间发现有许多小伙伴也准备去使用这个服务&#xff0c;所以为大家分享一下使用 创建DDM服务的经验&#xff0c;帮助小伙伴们少走弯路。首先在使用创建DDM实例的时候小…

project设置6天工作制日历

1.新建工作日历&#xff0c;取名 2.在“工作周”选项里设置 主要用到的是“工作周” 在project标准日历里&#xff0c;星期一---星期五是有工作时间&#xff0c;8-12,13-17。星期六&#xff0c;星期日是没有工作时间的&#xff0c;即非工作日。只要设置工作时间&#xff0c;就…

html5播放器自动全屏,HTML5 video播放器全屏(fullScreen)实现的方法

这篇文章主要介绍了HTML5 video播放器全屏(fullScreen)方法实例,本文直接给出一个完整代码实例,需要的朋友可以参考下首先来说&#xff0c;这个标题具有误导性&#xff0c;但这样设置改标题也是主要因为video使用的比较多在html5中&#xff0c;全屏方法可以适用于很多html 元素…

阿里如何实现100%容器化镜像化?八年技术演进之路回顾(转)

本文系转载。可以参考文中的以下内容&#xff1a; 阿里的容器框架的演进路线&#xff1b;在大公司内部、跨多部门、并且已经有大量现有系统情况下的推广实施方案&#xff1b;框架设计的方法论、设计图纸等。八年时间&#xff0c;阿里集团实现了 100%内部容器化镜像化&#xff0…

project日历设置-大小周交替

关键点是用到日历中的“例外日期”的重复周期功能 效果 2020年1月 1月19日是 2020年春节调休&#xff0c;要上班&#xff0c;工作日 2020年2月 2月1日是2020年春节放假&#xff0c;不上班&#xff0c;非工作日