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

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

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

  1. 串口通信模块5:串口操作自定义类(3)

    在上述代码基础之上,本页主要讨论串口数据的接受.发送以及与窗口类函数的通信. 1.读取串口数据函数的实现 //接收串口数据 void CMySerial::ReceiveChar(CMySerial* ...

  2. 串口通信模块5:串口操作自定义类(2)

    1.ProcessErrorMessage()函数的实现: ProcessErrorMessage()函数负责处理并提示错误信息,其实现过程如下: void CMySerial::ProcessErr ...

  3. 串口通信模块4:串口操作自定义类(1)

    为了以后使用方便,将串口的属性及操作封装成一个类.对串口的操作可以直接通过调用这个串口类提供的几个函数接口即可. 1.CMySerial类的定义:MySerial.h #pragma once #in ...

  4. java中自定义日期类_java日期操作自定义类

    每次当需要对日期进行处理的时候,总是会记不住库.方法和格式,所以就自己简单封装了下:包含了大部分功能,部分不常用的没有实现. package com.tunicorn.marketing.utils; ...

  5. 【Java文件操作(七)】序列化:将自定义类写入文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  6. QT-子线程或自定义类操作访问主界面UI控件的几种方法

    前言 QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式: 1.将ui指针公开后直接访问 (1)例如有个自己 ...

  7. 小汤学编程之JAVA基础day11——集合框架:List/Set/Map集合、Collections集合工具类、泛型、TreeMap和TreeSet

    一.集合的特点 二.继承结构图 三.List集合 1.特点     2.ArrayList类     3.LinkedList类     4.两者的对比     5.集合的遍历 四.Set集合 1.特 ...

  8. Java 集合之TreeSet 自定义类 比较器

    Java 集合之TreeSet 基于 TreeMap 的 NavigableSet 实现. 使用元素的自然顺序进行排序,或者通过在集合创建时提供的 Comparator 进行排序,具体取决于使用的构造 ...

  9. Java集合篇:Map接口、Map接口的实现类、Collections集合工具类

    目录 一.Map接口 1.1 Map接口概述 1.2 Map接口常用功能 二.Map接口的实现类 2.1 Map实现类之一:HashMap 2.1.1 HashMap概述 2.1.2 HashMap的 ...

最新文章

  1. 【云周刊】第146期:史上最大规模人机协同的双11,12位技术大V揭秘背后黑科技...
  2. java jvm学习笔记二(类装载器的体系结构)
  3. deepin v20.4设置全局搜索的快捷键
  4. 知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...
  5. oracle decode_错过血亏!一文搞懂Oracle锁相关视图及相关操作
  6. Laravel-事件简单使用
  7. 输出结果为16的python表达式_第一周作业(rayco)
  8. pdf转swf linux,Linux环境安装配置Swftools,pdf转swf工具
  9. MyEclipse2015破解安装与使用
  10. 读《蔡康永的说话之道》
  11. CSDN小伙伴们苦苦寻找的最全的微软msdn原版windows系统镜像和office下载地址集锦
  12. 输入一个正整数,求出它是几位数
  13. 东航电商前端技术周刊第二期20180608
  14. Java 对象copy之BeanCopier工具类的使用
  15. Java基础查漏补缺(个人向)
  16. solr mysql 增量索引_solr中实现MySQL数据全量索引和增量索引
  17. CBA第32轮:八一南昌男篮再胜北控 完成赛季“四连杀”
  18. shapefile格式(援引)
  19. 读书笔记(八)--多平台IoT
  20. Android手机USB OTG支持网线

热门文章

  1. 其他机器无法访问php,PHP 局域网其他机器无法访问的问题
  2. 蚂蚁森林快捷指令_iPhone「快捷指令」怎么玩?玩法太多,别让这个功能吃灰
  3. java数据段 静态区_回顾一下基础,关于栈与堆,常量池,静态区
  4. debian 删除mysql数据库_Debian中完全卸载MySQL的方法
  5. 小青蛙oracle跟踪,Oracle 存储过程:游标
  6. php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云
  7. 2020笔记本性价比之王_2020轻薄本性价比之王_2020轻薄本哪款好
  8. idea 关联jdk源码_[项目源码]ERP进销存系统
  9. Linux常用命令与基本操作、填空题、简答题
  10. java 显示透明背景png图片