gpt4 book ai didi

java - 使用比较器在列表中向上移动元素

转载 作者:行者123 更新时间:2023-12-02 05:06:15 25 4
gpt4 key购买 nike

我有一个 Java 中的 ArrayList :

{"PatMic", "PatientDoc", "Phram", "Patnet", "PatientA"}

所有元素都分配有编号:PatMic = 20、PatientDoc = 30、Phram = 40、Patnet = 50、PatientA = 60。

以及我当前的比较器:

Comparator<String> comparator = new Comparator<String>() {

@Override
public int compare(final String o1, final String o2) {
final int numbr1 = getElementNumber(); //Returns element's number in a list
final int numbr2 = getElementNumber();
if (numbr1 > numbr2 ) {
return 1;
} else if (numbr1 < numbr2 ) {
return -1;
}
return 0;
}
};
Collections.sort(strings, comparator);

我不想更改为每个元素分配的编号,但希望将元素 PatientA 移动到 PatMicPatientDoc 之间,以便修改后的列表应如下所示:

{"PatMic", "PatientA" "PatientDoc", "Phram", "Patnet"}

有人可以建议如何实现这一目标吗?我尝试了很多方法来修改现有的比较器逻辑但没有成功。谢谢。

最佳答案

您正在尝试根据与字符串关联的某些固有值进行排序。因此,对字符串本身进行排序可能是不正确的。您可能想要使用的是自定义对象(实现 equalshashCode 和接口(interface) Comparable),或者是 enum 类型。这将允许您显式更改这些对象的内部状态,这在使用Comparator时会自然地体现出来。例如,使用一个类:

class MyClass implements Comparable
{
private String name;
private int value;

//Constructor
public MyClass(String s, int v)
{
name = s;
value = v;
}

//Getters and setters

//Implement comparing method
}

然后您可以使用这些对象来代替字符串:

//...
MyClass patMic = new MyClass("PatMic", 20);
// So on..

关于java - 使用比较器在列表中向上移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768288/

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