java 大小相间排序_ArrayList实现根据某属性大小相间排序
Java本身提供了一個集合的幫助類java.util.Collections,提供了對集合操作一些方法,借助于此類提供的sort方法可以實現(xiàn)對List進行排序操作
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CollectionsTest {
public static void main(String[] args) {
List list=new ArrayList();
//向List中添加3個測試User
for (int i = 0; i < 3; i++) {
list.add(new User("user"+i,Math.random()*100,i));
}
//對User按照age降序排序
Collections.sort(list, new Comparator() {
@Override
public int compare(User o1, User o2) {
return o1.age>o1.age?-1:1;
}
});
System.out.println(list.toString());
}
}
class User{
public String name;
public double weight;
public int age;
public User(String name, double weight, int age) {
super();
this.name = name;
this.weight = weight;
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", weight=" + weight + ", age=" + age
+ "]";
}
}
運行結(jié)果如下:
[User [name=user2, weight=58.258765180626824, age=2], User [name=user1, weight=5.67998519085704, age=1], User [name=user0, weight=45.10058689997257, age=0]]
可以看到成功的按照age降序排序了。
但是有些時候我們可能需要按照某屬性進行大小相間排序,比如說餅狀圖旁邊會有相關(guān)的文字說明,在某些極端的情況下可能會出現(xiàn)說明文字重疊的現(xiàn)象,這個時候如果按照一個大的一個小的,大小交叉來顯示反而會能夠正常顯示。
新建一個工具類來對已經(jīng)進行排序的List進行大小相間排序
class DisorderListUtil {
public static void sort(List list){
Object[] a = list.toArray();
int n=a.length;
for (int i = 1; i < n/2+1; i+=2) {
T l=list.get(i);
list.set(i, list.get(n-i-1));
list.set(n-i-1, l);
}
}
}
這樣就能通過修改引用地址對List進行大小相間排序。
Collections.sort(list, new Comparator() {
@Overridepublic intcompare(User o1, User o2) {return o1.age>o1.age?-1:1;
}
});//在這里添加
DisorderListUtil.sort(list);
System.out.println(list.toString());
總結(jié)
以上是生活随笔為你收集整理的java 大小相间排序_ArrayList实现根据某属性大小相间排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java mutilcatch_Java
- 下一篇: 验证码生成java_JAVA-验证码生成