gpt4 book ai didi

java - 集合中的顺序是如何运作的?

转载 作者:行者123 更新时间:2023-11-29 03:41:21 25 4
gpt4 key购买 nike

这个类是按名称排序的,但是当各种对象具有相同的名称时会发生什么?

public class MyStuff implements Comparable<MyStuff> {
MyStuff(String n, int v){ name = n; value=v;}
String name; int value;
public int compareTo(MyStuff m){
return name.compareTo(m.name);
}
public String toString() { return name + " " + value + " ";}
public static void main(String[] args){
List<MyStuff> l = new ArrayList<MyStuff>();
MyStuff m0 = new MyStuff("hola",1);
MyStuff m1 = new MyStuff("hola",1);
MyStuff m2 = new MyStuff("hola",2);
MyStuff m3 = new MyStuff("hola",2);
l.add(m0);
l.add(m1);
l.add(m2);
l.add(m3);
Collections.sort(l);
System.out.println(l);
for(Object o: l) System.out.println(o.hashCode());
}
}

结果:

[hola 1 , hola 1 , hola 2 , hola 2 ]
21722195
12719253
30758157
12773951

哪个对象是第一个?取决于值(value),哈希码..?

最佳答案

java doc: Collections 中所述, public static <T extends Comparable<? super T>> void sort(List<T> list)保证稳定。

稳定是指:对于相等的对象,即比较返回0,相对顺序不变,即排序前左边的仍然在排序后的左边。

顺便说一句,正如java doc: Arrays中所指定的那样, public static void sort(Object[] a)也保证稳定。好像在java.util库,当元素不是基元时,排序总是保证稳定性。

关于java - 集合中的顺序是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989290/

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