比较器和比较器都是可用于对集合元素进行排序的接口。比较器接口属于java.util包,而可比较的接口属于java.lang包。比较器接口使用提供给它的两个对象进行排序收集,而可比较接口比较“this”是指提供给它的一个对象。
序号 | 键 | 可比 | 比较器 |
---|---|---|---|
1 | 方法 |
可比接口具有方法compareTo(Object a) |
比较器有一个compare(Object o1,Object O2)方法 |
2 |
排序用途 |
Collection.sort(List)方法可用于对Comparable类型对象的集合进行排序。 |
Collection.sort(List,Comparator)方法可用于对Comparator类型对象的集合进行排序。 |
3 |
排序顺序 |
可比性提供单个排序序列。 |
比较器提供了多个排序序列。 |
4 |
包 |
可比接口属于java.lang包。 |
比较器接口属于java.util包。 |
public class ComparableExample { public static void main(String[] args) { List<Laptop> laptopList = new ArrayList<>(); laptopList.add(new Laptop("HCL", 16, 800)); laptopList.add(new Laptop("Apple", 8, 100)); laptopList.add(new Laptop("Dell", 4, 600)); Collections.sort(laptopList); for (Laptop lap : laptopList) { System.out.println(lap.getRam()); } } } public class Laptop implements Comparable<Laptop> { String name; int ram; int price; public Laptop(String name, int ram, int price) { super(); this.name = name; this.ram = ram; this.price = price; } public String getName() { return name; } public int getRam() { return ram; } public void setRam(int ram) { this.ram = ram; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } @Override public int compareTo(Laptop o) { if (this.ram > o.getRam()) return 1; else { return -1; } } }
输出结果
4 8 16
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Laptop implements Comparator { String name; int ram; int price; public Laptop(String name, int ram, int price) { super(); this.name = name; this.ram = ram; this.price = price; } public String getName() { return name; } public int getRam() { return ram; } public void setRam(int ram) { this.ram = ram; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } @Override public int compare(Laptop o1, Laptop o2) { if (o1.getRam() < o2.getRam()) { return -1; }else if (o1.getRam() > o2.getRam()) { return 1; } else { return 0; } } public static void main(String[] args) { List laptopList = new ArrayList<>(); laptopList.add(new Laptop("HCL", 16, 800)); laptopList.add(new Laptop("Apple", 8, 100)); laptopList.add(new Laptop("Dell", 4, 600)); Comparator com = (Laptop o1, Laptop o2) -> o1.getName().compareTo(o2.getName()); Collections.sort(laptopList, com); for (Laptop lap : laptopList) { System.out.println(lap.getName()); } } }
输出结果
Apple Dell HCL
本文向大家介绍Java Comparable 和 Comparator 的详解及区别,包括了Java Comparable 和 Comparator 的详解及区别的使用技巧和注意事项,需要的朋友参考一下 Java Comparable 和 Comparator 的详解及区别 Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢?今天来了解一下。
本文向大家介绍浅析Java中comparator接口与Comparable接口的区别,包括了浅析Java中comparator接口与Comparable接口的区别的使用技巧和注意事项,需要的朋友参考一下 Comparable 简介 Comparable 是排序接口。 若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实
问题内容: 我知道已经解决了这个问题,但是我在SO上看到了不一致的论点。 所以,如果我有: 我得到 FALSE 。 据我了解,这是因为和是对同一对象()的两个不同引用。 所以我会有类似的东西: 现在,如果我只想比较两个字符串的 内容 ,我将使用 这是否意味着如果两个引用指向同一个对象,JVM就会简单地返回?因此,它不是在逐个字符地进行比较吗? 谢谢 编辑 拿着电话。感谢您指出优先顺序!!! 当我将
本文向大家介绍请说明Comparable和Comparator接口的作用以及它们的区别。相关面试题,主要包含被问及请说明Comparable和Comparator接口的作用以及它们的区别。时的应答技巧和注意事项,需要的朋友参考一下 考察点:comparable接口 Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,
本文向大家介绍对比Java中的Comparable排序接口和Comparator比较器接口,包括了对比Java中的Comparable排序接口和Comparator比较器接口的使用技巧和注意事项,需要的朋友参考一下 Comparable Comparable 是排序接口。 若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在
问题内容: 和java 和有什么不一样? 我想加载一个库,但是不想将路径添加到环境变量。这些方法中的任何一种都会有用吗? 问题答案: API文档中有区别。使您可以从默认路径加载-Java库路径。 另一个允许您从绝对路径加载它,必须将其指定为文件名。 如果您不想弄乱环境变量,则应使用