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是 ...
随机推荐
- nginx入门(一)
什么是nginx? nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5 ...
- 脚本_获取本机 MAC 地址
#!bin/bash#作者:liusingbon#功能:获取本机 MAC 地址ip a s |awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{ ...
- POJ 2104 区间第k大(主席树)
题目链接:http://poj.org/problem?id=2104 题目大意:给定还有n个数的序列,m个操作,每个操作含有l,r,k,求区间[l,r]第k大 解题思路:线段树只能维护序列的最大值最 ...
- 【Kickstart】2018 Round (Practice ~ C)
Practice Round Problem A GBus count (9pt/15pt) (2019年1月14日,kickstart群每日一题) 题意:有一条笔直的大路,上面有城市编号从 1 开始 ...
- $_POST 和 php://input 的区别
手册中摘取的几句话: 当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时, ...
- 四种会话跟踪技术以及jstl介绍
四种会话跟踪技术 page:代表与一个页面相关的对象和属性.一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示.这既包括 ...
- python 判断一个数是整数还是小数
a=81**0.5 s=str(a).split('.') if float(s[1])==0: print('整数') else :print('小数')
- RMQ Fanout
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11795256.html RMQ Fanout Project Directory Maven Depe ...
- jenkins解决python不是内部命令
1.在 Windows 提示符下运行是没有问题. 2.把Jenkins项目配置中 python main.py 修改成python可执行文件全路径:D:\Python35\python.exe m ...
- FastDFS整合nginx(三)
一 安装 百度云:所有附件的地址 unzip fastdfs-nginx-module-master.zip [root@node02 mnt]# cd fastdfs-nginx-module-ma ...