zoukankan      html  css  js  c++  java
  • Collections之sort的两个方法(自然排序和自定义比较器排序)

    Collections是个服务于Collection的工具类(静态的),它里面定义了一些集合可以用到的方法。

    本文演示了Collections类里sort()的两个方法。第一种只需传入被排序的集合,便会为它自然排序。但有时我们需要自定义排序的方式,这是我们就得定义一个比较器,里面定义我们要排序的方式,调用sort()时,把被排序的集合和比较器同时传入,就可以按照自定义的方式排序了。

    package Test602;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    
    /**
     * 对字符串进行自然排序和长度排序
     */
    public class CollectionsDemo {
    
    	public static void main(String[] args) {
    		ArrayList<String> al = new ArrayList<String>();
    		al.add("fa");
    		al.add("gaa");
    		al.add("xa");
    		al.add("vacvh");
    		al.add("wetq");
    		al.add("hja");
    		al.add("jewik");
    		getAl(al);
    		System.out.println(ziRanSort(al));
    		System.out.println(strLenSort(al));
    		
    	}
    	//按原序列取出ArrayList的元素
    	public static void getAl(ArrayList<String> al)
    	{
    		Iterator<String> it = al.iterator();
    		//String result = null;
    		while(it.hasNext())
    		{
    			String result = it.next();
    			System.out.println(result);
    		}
    	
    	}
    	//进行自然排序
    	public static ArrayList<String> ziRanSort(ArrayList<String> al)
    	{
    		Collections.sort(al);
    		return al;
    		
    	}
    	//按照字符串长度进行排序
    	public static ArrayList<String> strLenSort(ArrayList<String> al)
    	{
    		StrLenComparator comp = new StrLenComparator();
    		Collections.sort(al, comp);
    		return al;
    		
    	}
    }
    

    新建一个类,里面自定义一个比较器(按照字符串的长度进行比较)

    package Test602;
    
    import java.util.Comparator;
    
    public class StrLenComparator implements Comparator<String>{
    
    	public int compare(String str1, String str2) {
    		// TODO Auto-generated method stub
    		if(str1.length()>str2.length())
    		{
    			return 1;
    		}
    		if(str1.length()<str2.length())
    		{
    			return -1;
    		}
    		
    		return 0;
    	}
    
    }
    



     

  • 相关阅读:
    重学计算机组成原理(七)- 程序无法同时在Linux和Windows下运行?
    学习ConcurrentHashMap并发写机制
    Unsafe中CAS的实现
    LinkedHashMap源码解读
    Hashset源码分析
    复盘MySQL分页查询优化方案
    Java面试必问之Hashmap底层实现原理(JDK1.8)
    Java面试必问之Hashmap底层实现原理(JDK1.7)
    Docker实战之Kafka集群
    Docker实战之Zookeeper集群
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/3836383.html
Copyright © 2011-2022 走看看