一、集合排序概述
1、主要内容
回顾:
//数组的排序 int[] arr= {2,3,4,5,2,1}; Arrays.sort(arr);
2、集合排序方法
二、对基本数据类型和字符串类型进行排序
1、对基本数据类型排序
List中只能存放对象,要想存放基本数据类型的话,泛型中只能写其对应的包装类。
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class IntSort { public static void main(String[] args) { //对存储在List中的整形数据进行排序 List<Integer> list = new ArrayList<Integer>(); list.add(5); list.add(9); list.add(3); list.add(1); System.out.println("排序前:"); for (int n: list) { System.out.print(n + " "); } System.out.println(); //对List中的数据进行排序 Collections.sort(list); System.out.println("排序后:"); for (int n: list) { System.out.print(n + " "); } } }
2、对字符串排序
集合中字符串的排序后其实是按字符顺序,ASCII值顺序进行排序的
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class StringSort { public static void main(String[] args) { //对存放在List中的字符串进行排序。 List<String> list = new ArrayList<String>(); list.add("orange"); list.add("blue"); list.add("yellow"); list.add("gray"); System.out.println("排序前: "); for (String str: list) { System.out.print(str + " "); } System.out.println(); //对List中的数据进行排序 Collections.sort(list); System.out.println("排序后: "); for (String str: list) { System.out.print(str + " "); } //排序后其实是按字母顺序 } }
三、Comparator接口
1、问题场景:
自定义的类如何排序?
2、解决方法:
使用Comparable或Comparator接口
3、Comparator接口介绍
4、对宠物猫进行排序
对自定义的类按照一定的规则进行排序:
(1)对宠物猫按名字进行排序
String类型具有compareTo()方法
例:
int n = name1.conpareTo(name2);
如果name1<name2时,那么n是负整数,相等则为0,否则为正整数。
name1与name2位置调换下,则会实现倒序的排序。
import java.util.Comparator; //按名字进行升序排序的比较器 public class NameComparator implements Comparator<Cat> { @Override public int compare(Cat o1, Cat o2) { //按名字升序排序 String name1 = o1.getName(); String name2 = o2.getName(); int n = name1.compareTo(name2); return n; } }
语法格式:
Collections.sort(catList, new NameComparator());
(2)对宠物猫按年龄降序排序
import java.util.Comparator; //按年龄进行降序排序的比较器 public class AgeComparator implements Comparator<Cat> { @Override public int compare(Cat o1, Cat o2) { int age1 = o1.getMonth(); int age2 = o2.getMonth(); return age2 - age1; } }
语法格式:
Collections.sort(catList, new AgeComparator());
四、Comparable接口
1、Comparable概述
2、对商品价格进行降序排序案例
(1)操作步骤
(2)代码实现
①商品类的定义
public class Goods implements Comparable<Goods> { //实现Comparable接口,利用泛型限定比较的类型 private String id; //商品编号 private String name; //商品名称 private double price; //商品价格 //构造方法 public Goods() { } public Goods(String id, String name, double price) { this.setId(id); this.setName(name); this.setPrice(price); } //getter和setter方法 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "商品编号:" + id + ",商品名称:" + name + ",商品价格:" + price; } @Override public int compareTo(Goods o) { //重写compareTo方法。 //取出商品价格 double price1 = this.getPrice(); double price2 = o.getPrice(); int n = new Double(price2 - price1).intValue(); //double类型的差值转为int return n; }
②排序步骤
Collections.sort(goodsList);
五、集合排序总结
Comparator和Comparable接口的区别
1、Comparator:
①位于java.util包
②在要比较的类的外部实现该接口
③调用sort方法时,要指定Comparator的实现类
使用顺序:
2、Comparable
①位于java.lang包
②在要比较的类上实现该接口
③调用sort方法时,只需指定集合名即可
使用顺序:
定义要比较的类,并实现comparable接口
测试
以上所述是小编给大家介绍的Java集合排序详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍java拓展集合工具类CollectionUtils,包括了java拓展集合工具类CollectionUtils的使用技巧和注意事项,需要的朋友参考一下 拓展集合工具类CollectionUtils,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集。Guava提供了若干工具方法,以便让类似的工作变得更简单。 Forwarding Decorators 针对所有类型的集合接口,Guava都提供了Forwarding抽象类以简化装饰者模式的使用。 Forwarding抽象类定义了一个抽象方法:del
Guava提供了很多类似java.util.Collections的静态工具类 Guava中工具类与集合的对应关系如下: 集合接口 来自于JDK/Guava 对应的Guava工具类 Collection JDK Collections2 List JDK Lists Set JDK Sets SortedSet JDK Sets Map JDK Maps SortedMap JDK Maps Qu
1. Collections工具类 Collections类概述 针对集合操作 的工具类,里面的方法都是静态的,可以对集合进行排序、二分查找、反转、混排等。 Collection和Collections的区别 Collection:是单列集合的顶层接口,有子接口List和Set。Collections:是针对集合操作的工具类,有对集合进行排序和二分查找等方法 Collections常用方法 pub
本文向大家介绍JAVA集合框架工具类自定义Collections集合方法,包括了JAVA集合框架工具类自定义Collections集合方法的使用技巧和注意事项,需要的朋友参考一下 项目中有需要多次统计 某些集合中 的某个属性值,所以考虑封装一个方法,让其其定义实现计算方式。 话不多说,看代码: 1、封装的自定义集合工具类:CollectionsCustom 2、测试类TestCollections
问题内容: 我是Java的初学者。请建议可以/应该使用哪些集合来维护Java中的排序列表。我尝试了和,但它们不是我想要的。 问题答案: 这来得很晚,但是JDK中有一个类只是为了获得排序列表。它被命名(与其他Sorted*接口有些混乱)“ ”。它可以排序或使用Comparator。 与 sorted using 的区别在于,通过使用堆数据结构,这将始终保持部分顺序,具有O(log(n))插入性能,而