gpt4 book ai didi

用于简单自定义逻辑的java比较器

转载 作者:行者123 更新时间:2023-12-02 00:49:44 27 4
gpt4 key购买 nike

如何找到下面示例中的第 4,1 和 6 行?
在这种情况下,将 Collection.sort() 与 Comparator 一起使用是否合理?

       a -  b - c - d

1.) 6 8 16 18
2.) 38 40 55 57
3.) 6 8 25 27
4.) 1 5 11 15
5.) 6 8 3 5
6.) 9 12 19 22
7.) 18 20 1 3
8.) 23 25 15 17

顶部的示例是一个列表,其中的对象满足以下条件:
- 每个对象包含4个整数(a,b,c,d),
- 列表中的每个对象都是唯一的,
- a < b 且 c < d。

<小时/>

下面不是工作示例,而是我的思维方式,我如何期望比较器能够找到预期的对象。

public class Row_Filter implements Comparable<Row_Filter>{
int a,b,c,d;
public Row_Filter(int a, int b, int c, int d) {
this.a = a; this.b = b; this.c = c; this.d = d;
}
static class FilterAccordingAB implements Comparator<Row_Filter> {
public int compare(Row_Filter o1, Row_Filter o2) {
return o2.a - o1.b+1;
}
}
static class FilterAccordingCD implements Comparator<Row_Filter> {
public int compare(Row_Filter o1, Row_Filter o2) {
return o2.c - o1.d+1;
}
}
static class FilterAccordingABCD implements Comparator<Row_Filter> {
public int compare(Row_Filter o1, Row_Filter o2) {
FilterAccordingAB abF=null; FilterAccordingCD cdF=null;
if((abF.compare(o1, o2)==0) && (cdF.compare(o1, o2)==0)){
return 1;
}
return -1;
}
}
}

最佳答案

您需要做的是实现一个比较器接口(interface)。查找该接口(interface)的 JavaDocs。您需要编写一个实现该接口(interface)的类。这涉及编写一种方法(您不需要重新实现 equals())。

该方法传递两个对象。根据您的要求,查看您需要从该方法返回什么值来显示两个对象“相等”。然后根据您的要求编写代码以在它们“相等”时返回该值。

如果其中任何一个不清楚,您将需要查找有关编写方法、编写类或使用接口(interface)的基本 Java 教科书。

关于用于简单自定义逻辑的java比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3720890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com