• ArrayList实现根据某属性大小相间排序


    Java本身提供了一个集合的帮助类java.util.Collections,提供了对集合操作一些方法,借助于此类提供的sort方法可以实现对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<User> list=new ArrayList<User>();
    		//向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<User>() {
    			@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
    				+ "]";
    	}
    }
    

      

    运行结果如下:
    [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降序排序了。

    但是有些时候我们可能需要按照某属性进行大小相间排序,比如说饼状图旁边会有相关的文字说明,在某些极端的情况下可能会出现说明文字重叠的现象,这个时候如果按照一个大的一个小的,大小交叉来显示反而会能够正常显示。

    新建一个工具类来对已经进行排序的List进行大小相间排序

    class DisorderListUtil {
    	public static <T> void sort(List<T> 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<User>() {
                @Override
                public int compare(User o1, User o2) {
                    return o1.age>o1.age?-1:1;
                }
    
            });
    //在这里添加
    DisorderListUtil.sort(list);
    System.out.println(list.toString());

      

    未经许可禁止转载本博客内容
  • 相关阅读:
    项目笔记:统计页面功能实现
    jquery easyui datagrid实现数据改动
    Skia图片解码模块流程分析
    TRIZ的成功案例
    基于HTML5的Web SCADA工控移动应用
    webservices系列(五)——javaweb整合Axis2及多service配置
    org.hibernate.PropertyValueException: not-null property references a null or transient value: model.
    线程池和异步线程
    [leetcode]Implement strStr()
    Python工作日类库Busines Holiday介绍
  • 原文地址:https://www.cnblogs.com/liangshuai/p/3340603.html
Copyright © 2020-2023  润新知