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

How to make a priority int list that regards the insertion order in case of duplicates in Java?

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

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

在 Java 中有任何 类 /方法吗?我应该在哪里寻找提示?

1如果要区分4和4,还得加点东西=>做一个class

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 祝你好运:您可以使用常规排序:它保留重复项的初始顺序:

看到这个post:

它给出:

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( )]

希望对您有所帮助!