gpt4 book ai didi

java - 如何制作一个考虑插入顺序的优先级 int 列表,以防 Java 中出现重复?

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

我想创建一个输入 int 值的优先级列表。我知道该列表通常具有升序的自然顺序(如果我弄错了,请纠正我)。但作为新手,我想做的就是对相同的值进行排序。

假设我输入了值 3、6、4、1、2、4、7、4,我期望得到一个升序 int 值列表。但我希望在上面的列表中第二个 4 具有较低的优先级,因此我希望它紧随第一个 4 值之后,第三个 4 值紧随第二个值之后,等等。

Java 中有相关的类/方法吗?我应该在哪里寻找提示?

最佳答案

1如果你想区分4和4,你必须添加一些东西=>创建一个类

2 不要重新发明轮子,使用集合(接受重复项)并排序

3那么你必须实现一些比较(implements Comparable)

看到这个:How to sort an ArrayList in Java

它给出了这个:

// It is like Integer + !

public class IntegerPlus implements Comparable<IntegerPlus>
{
int value=0;
String id="";

public IntegerPlus(int _val) {value=_val;}
public IntegerPlus(int _val, String _id) {value=_val; id=_id;}

@Override
public String toString() {return value+"("+id+")";}

@Override
public int compareTo(IntegerPlus _other)
{
if (value>_other.value) return 1;
if (value<_other.value) return -1;
return 0;
}

}

4 祝你好运:您可以使用常规排序:它保留重复项的初始顺序:

查看这篇文章:Does Collections.sort keep order on equal elements?

它给出:

IntegerPlus ip1=new IntegerPlus(4,"first");
System.out.println(ip1);

List<IntegerPlus> lipl=new ArrayList<IntegerPlus>();
lipl.add(ip1);
lipl.add(new IntegerPlus(2,"b"));
lipl.add(new IntegerPlus(4,"second"));
lipl.add(new IntegerPlus(1));
lipl.add(new IntegerPlus(3));
lipl.add(new IntegerPlus(5));
lipl.add(new IntegerPlus(6));
lipl.add(new IntegerPlus(4,"third"));
lipl.add(new IntegerPlus(2,"c"));


System.out.println("BEFORE SORT:"+lipl);

=> 排序前:[4(第一), 2(b), 4(第二), 1(), 3(), 5(), 6(), 4(第三), 2(c)]

Collections.sort(lipl);

System.out.println("AFTER SORT:"+lipl);

=> 排序后:[1(), 2(b), 2(c), 3(), 4(第一), 4(第二), 4(第三), 5(), 6()]

希望对你有帮助!

关于java - 如何制作一个考虑插入顺序的优先级 int 列表,以防 Java 中出现重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377845/

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