zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Max Sum of Max-K-sub-sequence(单调队列)
    Matrix Swapping II(求矩阵最大面积,dp)
    重温世界杯(贪心)
    Pie(求最小身高差,dp)
    Matrix(多线程dp)
    Python 实现自动导入缺失的库
    分布式系统session一致性解决方案
    数据结构 【链表】
    【数字图像处理】gamma变换
    【数字图像处理】顶帽变换和底帽变换
  • 原文地址:https://www.cnblogs.com/zhangfei/p/4510795.html
Copyright © 2011-2022 走看看