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是 ...
随机推荐
- IMAP协议学习笔记(一)
IMAP IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol ...
- 获取Http请求IP的工具类
public class IpAddressUtil { public static String getIpAddr(HttpServletRequest request){ String ipAd ...
- web前端工程化
目标 1.能够了解模块化的相关规范 2.了解webpack 3.了解使用Vue单文件组件 4.能够搭建Vue脚手架 5.掌握Element-UI的使用 1.模块化的分类 A.浏览器端的模块化 1).A ...
- idea 创建java web项目ssm-gradle
环境准备:jdk1.8+tomcat8+idea+gradle 1.创建项目SSM 使用gradle创建项目,按照提示如下 image.png 输入项目名称,组名 image.png im ...
- 字符串format函数使用
#format拼接字符串,format()内的参数必须为可迭代的对象p1="i am {2},age {1},{0}".format("seven",18,'a ...
- web源码泄露
http://www.am0s.com/ctf/175.html vim 文件泄露 1.备份文件 源文件:index.php 备份文件:index.php~ 2.临时文件 源文件:index.php ...
- CSS3 ::before和::after伪元素的实际应用
实例 1.清除浮动 通常我们清除清除浮动的方式就是在浮动元素后面添加一个空的Div标签,然后在设置它的清除浮动要是,使用after伪元素,我们就不需要添加无意义的div标签在html中了,下面的例子就 ...
- JS基础入门篇(三)— for循环,取余,取整。
1.for循环 1.for的基本简介 作用: 根据一定的条件,重复地执行一行或多行代码 语法: for( 初始化 ; 判断条件 ; 条件改变 ){ 代码块 } 2.for循环的执行顺序 <bod ...
- RestTemplate 发送post请求
springboot使用restTemplate post提交值 restTemplate post值 post提交有 FormData和Payload 两种形式: 第一种是formdata形式,在h ...
- Pyhton---基础---递归
2019-05-21 ------------------------------------------- 一. #类似于栈的先进后出模式def digui(num): print(num) ...