Tag: 比较器

我可以使用比较器而不实现Comparable吗?

是否可以在不实现Comparable类的情况下使用Comparator? 例如,如果我有以下内容: MyClass { Comparator comp; OrderedListInheritance(Comparator c) { this.comp = c; } } 我可以使用comp来比较两个对象吗? 如果是这样,我该怎么做呢? 谢谢…

非常大的JTable,RowFilter和额外的负载

我想要求澄清RowFilter的使用及其对性能的影响。 我通过方法include(Entry)实现了一个filter,对于每一行,只需检查模型中的对应值是否设置了布尔标志:如果是,则返回true,否则返回false。 现在,我拥有的JTable可能相当大(1000000+行),我不确定应用于如此大的输入集的这种简单过滤是否成本高昂。 过滤行和基础数据之间的映射如何正常工作? 我的意思是,它是否存储任何额外的数据,或者它只是“动态”绘制与filter匹配的行? 非常感谢您的澄清。

基于另一个类中可用的参数对List进行排序

我有一些Java Comparator接口的设计问题。 我有一个类,其中包含一组简单的自定义数据结构: class data { Long ID; int Priority; … } ID是唯一的,因此可以使用ID‍‍‍‍‍获取整个数据。 和容器类: class Container { Set mySet = …; List myList = …; … } 出于某些不可避免的原因,我需要并行保存排序的data ID List 。 我需要按Priority排序List 。 因为, Comparator应该比较Priority它应该实现Comparator 。 但List仅包含ID ,并且Priority不能直接使用。 这就是问题。 List只有ID 。 因此,Comparator类无法访问Priority 。 我该如何设计这样的概念?

比较器不适用于Arrays.sort

所以我正在研究比较器问题,我无法弄清楚为什么第一类中的Array.sort给出了以下错误: Arrays类型中的方法sort(T [],Comparator)不适用于参数(ArrayList,CalorieComparator) 餐厅类: import java.util.ArrayList; import java.util.List; import java.util.Arrays; public class Restaurant { private ArrayList elist; public Restaurant() { } public void addEdibleItem(Edible item){ elist.add(item); } public List orderByCalories(){ Arrays.sort(elist, new CalorieComparator()); } CalorieComparator类: import java.util.Comparator; public class CalorieComparator implements Comparator { public int compare(Object o1, Object o2){ Edible thisfood = (Edible)o1; Edible otherfood […]

Java排序与MySQL排序不同

我需要检查表中的排序,表格内容由MySQL提供。 我正在使用以下行对列表进行排序: Collections.sort(sorted, String.CASE_INSENSITIVE_ORDER); 并得到以下结果: tes3@test.com test4@test.com test5@test.com test@test.com test_user@mail.com user-og@driver.com 这是我通过查询从MySQL获得的: SELECT ’email’ FROM ‘user’ WHERE 1 ORDER BY ‘user’.’email’ ASC : tes3@test.com test_user@mail.com test@test.com test4@test.com test5@test.com user-og@driver.com 如您所见,订单不一样。 似乎Java根据ASCII表排序: http : //www.asciitable.com/ 4 (52) – @ (64) – _ (95) 但在MySQL结果中,顺序是_ -> @ -> 4 email字段排序规则为: utf8_unicode_ci 有什么问题,是否有任何比较器以相同的方式进行排序?

Java – 如何以多种方式对对象进行排序:Arrays.sort(),Comparable

假设我有一个包含对象的数组,我有一些员工(对象)。 他们都有: int age , double salary 。 我想对这个数组进行排序,以便我的类实现Comparable 。 我做了一个方法: public int compareTo(Employee other) { return Double.compare(salary, other.salary); } 没关系,排序工作正常。 但我按double salary排序。 现在我想按int age排序那么现在呢? 我做了一个方法: public int compareAge(Employee other) { return Integer.compare(age, other.age); } 我如何使用Arrays.sort() ? 我希望有可能使用这两种方法 – 按工资排序,按年龄排序。 谢谢你的帮助。

比较然后比较给出编译错误

我正在尝试按名称对员工List进行排序,然后使用Java8 Comparator进行排序,我在Comparator创建但是它给了我一个编译错误 Type mismatch: cannot convert from Comparator to Comparator c = Comparator.comparing(s -> s.split(“\\s+”)[0]) .thenComparingInt(s -> Integer.parseInt(s.split(“\\s+”)[1])); //compile error 但如果我明确指定Type,它就有效 Comparator c = Comparator. comparing(s -> s.split(“\\s+”)[0]) .thenComparingInt(s -> Integer.parseInt(s.split(“\\s+”)[1])); //works 或者通过创建两个Compartor和链 Comparator name = Comparator.comparing(s -> s.split(“\\s+”)[0]); Comparator age = Comparator.comparingInt(s -> Integer.parseInt(s.split(“\\s+”)[1])); Comparator cc = name.thenComparing(age); //works 我在左侧指定了Comparator类型,但为什么自动类型推断没有找到正确的Type并期望明确指定。 有人可以澄清一下吗? 这是代码 String[] arr […]

Java集合排序的绑定不匹配

您需要有关java集合排序的帮助。 它给了我这个错误: Bound mismatch: The generic method sort(List) of type Collections is not applicable for the arguments (List). The inferred type WifiSSID is not a valid substitute for the bounded parameter <T extends Comparable> 我的代码看起来像: public class WifiSSID { public String SSIS; public double id; } public class ScanFilterWifiList { public ScanFilterWifiList(List wifiList) { Collections.sort(wifiList); […]

Collections.sort()使用比较器?

import java.util.*; public class C_2 { public static void main(String args[]) { String theStrings[] = { “x”, “a”, “b”, “c”, “d” }; List l = Arrays.asList(theStrings); Collections.sort(l); // line a Collections.sort(l, new ThisIsMyThing()); // line b System.out.println(l); } } class ThisIsMyThing implements Comparator { public int compare(Object o1, Object o2) { String s1 = (String)o1; […]

在Java 8中对比较器的误解

public class Test { public static void main(String[] args) { List<Pair> list = new ArrayList(); list.add(new Pair(“1”, 8)); list.add(new Pair(“3”, 2)); list.add(new Pair(“2”, 15)); list.stream() .sorted(Comparator.comparingInt(p -> pv)) .map(p -> pk) .forEach(System.out::println); } } class Pair { K k; V v; public Pair(K k, V v) { this.k = k; this.v = v; } } […]