• JAVA中List的排序


    对于List的排序,第一印象很可能就是用Collections.sort(list); 这个排序是升序排列,一般情况下,是好用的,但是如果碰到这样一种情况:

    List<String> list = new ArrayList<String>();

    list.add("192.168.12.1");
    list.add("192.168.2.1");

    使用Collections.sort(list)后,排序产生的结果是:

    192.168.12.1
    192.168.2.1

    这样可能不符合我们的预期,这上面的两个字符串是两个内网IP地址,一般情况下,我们会认为192.168.2.1是要先于192.168.12.1的,所以,在这种情况下,我们需要实现Comparator接口:

    package com.demo;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class Test12 {
    	
    	public void sort(){
    		List<String> list = new ArrayList<String>();
    		list.add("192.168.12.2");
    		list.add("192.168.2.1");
    		Collections.sort(list, new Comparator<String>() {
    			@Override
    			public int compare(String s1, String s2) {
    				String[] ss1 = s1.split("\.");
    				String[] ss2 = s2.split("\.");
    				for (int i = 0; i < ss1.length; i++) {
    					if(Integer.valueOf(ss1[i])<Integer.valueOf(ss2[i])){
    						return -1;				
    					}else if(Integer.valueOf(ss1[i])>Integer.valueOf(ss2[i])){
    						return 1;
    					}
    				}
    				return 0;
    			}
    		});
    		this.outputList(list);
    	}
    	
    	private void outputList(List<String> list){
    		for (String i : list) {
    			System.out.println(i);
    		}
    	}
    
    	public static void main(String[] args) {
    		Test12 t = new Test12();
    		t.sort();
    		
    	}
    
    }
    

     此时输出的结果就为:

    192.168.2.1

    192.168.12.1

  • 相关阅读:
    后缀自动机在复习
    冬令营模拟day2总结
    割点(模板)
    黑匣子
    挤牛奶
    上白泽慧音
    lca最小公共祖先祖先
    最小花费
    牛的旅行(标程)
    骑马修栅栏
  • 原文地址:https://www.cnblogs.com/zhangfei/p/4510795.html
Copyright © 2020-2023  润新知