Collections -集合排序compareTo方法重写,shuffle,addall
package cn.learn.collection.Collections;
/*
排序的对象的类,实现comparable借口,重写compareto方法
若要打印必须重写toString方法,会默认调用
*/
public class Person implements Comparable<Person>{
private String name;
private int age; @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} public Person() {
} public Person(String name, int age) {
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} //重写排序方法
@Override
public int compareTo(Person o) {
return this.getAge() - o.getAge();//年龄升序排序
//return 0;//认为元素都是相同的
}
}
package cn.learn.collection.Collections; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator; /*
java.util.Collections是集合工具类 注意:sort(List<T> list)使用前提
被排序的集合里面存储的元素,若不符合java里面自带的方法,是自定义类型
需要在一般是生成对象的类中
实现Comparable,重写Compareto定义排序规则
o - this 降序 sort(List<E>,Comparator<? super T>)
Comparable与Comparator的区别
Comparable:自己(this)和别人(参数)比较,需要自己在类中重写comparTo方法
Comparator:相当于找一个第三方的裁判,比较两个 ,是一个接口 ,重写内部类 */
public class CollectionsApi {
public static void main(String[] args) {
ArrayList<Integer> num = new ArrayList<>();
num.add(5);
num.add(8);
num.add(7);
num.add(27);
//太麻烦,可以用集合工具类,添加多个元素,返回的是Boolean值
Collections.addAll(num,5,6,8,12);
System.out.println(num);//[5, 8, 7, 27, 5, 6, 8, 12] //shuffle(弄混)方法,打乱集合顺序
Collections.shuffle(num);
System.out.println(num); //[8, 12, 27, 5, 5, 7, 6, 8] //sort集合排序,默认升序
Collections.sort(num);
System.out.println(num); //[5, 5, 6, 7, 8, 8, 12, 27] //如果不是字符和整数,对对象进行排序,需要重写排序方法
//根据年龄进行升序排序
ArrayList<Person> people=new ArrayList<>();
people.add(new Person("ap",12));
people.add(new Person("nha",16));
people.add(new Person("nihp",10));
people.add(new Person("hp",10));
Collections.sort(people); //排序
System.out.println(people); //sort(List<E>,Comparator<? super T>)
Collections.sort(people, new Comparator<Person>() {
//重写比较规则,降序
@Override
public int compare(Person o1, Person o2) {
//如果年龄一样,比较名字长度升序,年龄降序
int age= o2.getAge() - o1.getAge();
if(age == 0){
age=o1.getName().length()-o2.getName().length();
}
return age;
}
});
System.out.println(people); }
}
Collections -集合排序compareTo方法重写,shuffle,addall的更多相关文章
- List集合排序的方法
1.list集合中的对象实现Comparable接口 public class User implements Comparable<User>{ private Integer id; ...
- 关于自定义 List集合排序的方法!
大致流程: 排序是用到排序的接口Comparator<T>你要先建一个类实现比较器Comparator //大致流程public class StuComp implements Comp ...
- Java连载88-HashSet集合与hashCode方法重写
一.Set集合 1.HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构. 2.哈希表又称为散列表,哈希表底层是一个数组,这个数组中每一个元素是一个单向链表,每个单向链 ...
- JS 对Array集合排序的方法
我的业务是根据距离的远近经行一个排序: 第一种方法:冒泡排序 排序前的数据是这样子的: 排序后是这样子的: 代码可以直接复制使用的: <!doctype html> <html> ...
- 使用 Collections 实现排序 sort方法 对List 实体类实现Comparable类 示例
package com.test.jj; import java.util.ArrayList; import java.util.Collections; public class Test { A ...
- Java中List集合排序的方法 比较器的使用 根据学生对象数学 语文 英语成绩总和进行sort排序
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...
- TreeSet集合的自然排序与比较器排序、Comparable接口的compareTo()方法
[自然排序] package com.hxl; public class Student implements Comparable<Student> { private String n ...
- Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)
代码: 1 import java.util.*; 2 3 /** 4 * 学习自定义排序:继承Comparable接口,重写compareTo方法(排序规则). 5 * TreeMap容器的Key是 ...
随机推荐
- [Vue warn]: You may have an infinite update loop in a component render function
[Vue warn]: You may have an infinite update loop in a component render function 这个问题很奇怪,之前从来没有遇到过.如果 ...
- [SheetJS] js-xlsx模块学习指南
简介 SheetJS是前端操作Excel以及类似的二维表的最佳选择之一,而js-xlsx是它的社区版本. js-xlsx将注意力集中到了数据转换和导出上,所以它支持相当多种类的数据解析和导出.不仅仅局 ...
- Python2/3 安装各类包的教程
1.pycryptodome(pyCrypto) pyCrypto包已经失效了,需要替换为pycryptodome 有SSR直接 pip install pycryptodome 国内用 pip in ...
- java 企业网站源码模版 屏幕自适应 有前后台 springmvc SSM 生成静态化引擎
前台: 支持四套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问 ...
- sqlmap 基本使用步骤(二)
post------------------------------------------------------------------1.使用 -rpython sqlmap.py -r pos ...
- PCB项目 X1 STC12C5A60S2-LQPF48
单片机控制系统双层板STC51 简介: STC12C5A60S2主芯片,12MHz主频 12V电源输入,12/5/3V电源输出 4路0~12V可调10位ADC输入 4路1A大电流达林顿输出 4路INT ...
- 动态全屏弹窗特效 Morphing Modal Window
动态变形弹窗特效 Morphing Modal Window 弹出窗体是网页常用的一个交互设计,在这个注重交互动画体验的时代,网页弹窗也可以来点新鲜的点子,比如今天分享的CSS 变形Modal Win ...
- django之配置文件setting.py
一:配置文件setting.py中的简单配置更改 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 简单解释 ...
- 16.go语言基础学习(上)——2019年12月16日
2019年12月13日10:35:20 1.介绍 2019年10月31日15:09:03 2.基本语法 2.1 定义变量 2019年10月31日16:12:34 1.函数外必须使用var定义变量 va ...
- Linux命令行工具之pidstat命令
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484624.html pidstat命令就可以帮助我们监测到具体线程的上下文切换 通过pidstat ...