作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个类是按名称排序的,但是当各种对象具有相同的名称时会发生什么?
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/
我是一名优秀的程序员,十分优秀!