码迷,mamicode.com
首页 > 其他好文 > 详细

TreeSet典型例子两个 比较器?

时间:2017-08-17 00:33:41      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:重复   port   java   还需   class   private   for   util   test   

package com.runoob.Collection;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

/*
 * 联系:对多个字符串(不重复)按照长度排序(由短到长)
 * 思路:
 * 1.多个字符串,需要容器存储
 * 2.选择哪个容器。字符串是对象,可以选择集合,而且不重复,选择set集合
 * 3.还需要排序,可以选择TreeSet集合
 */
public class TreeSetTest {
	public static void main(String[] args) {
		
		//sortStringbyLength();
		sortStringbyLength2();

	}

	public static void sortStringbyLength(){

		Set set = new TreeSet(new ComparatorByLength());

		set.add("hahaha");
		set.add("ab");
		set.add("xxxx");
		set.add("ttt");
		set.add("lalalalala");

		for(Object obj : set){
			System.out.println(obj);
		}
	}


	/*
	 * 练习5:对多个字符串(重复),按照长度排序
	 * 思路:
	 * 1.能使用TreeSet吗?不能,
	 * 2.可以存储到数组,list,这里先选择数组
	 */

	public static void sortStringbyLength2(){

		String [] arr ={"hahaha","abccc","xixi","nba","cctv","zero","hahaha","xixi"};
		
		//自然排序可以使用String类中的compareTo方法
		//但是现在要的是按照长度排序,这就需要比较器
		
		//定以一个按照长度排序的比较器对象
		Comparator comp = new ComparatorByLength();
		
		for(int x=0;x<arr.length-1;x++){
			for(int y =x+1;y<arr.length;y++){
			//	if(arr[x].compareTo(arr[y])>0){//按照字典书序
				if(comp.compare(arr[x], arr[y])>0)//按照长度顺序
					swap(arr,x,y);
				}
			}
		
		
		for(String s : arr){
			System.out.println(s);
		}
		
	}

	private static void swap(String[] arr, int x, int y) {
		// TODO Auto-generated method stub
		String temp = arr[x];
		arr[x] = arr[y];
		arr[y] =temp;
	}
}

  ========================

package com.runoob.Collection;

import java.util.Comparator;

public class ComparatorByLength implements Comparator {

	@Override
	public int compare(Object o1, Object o2) {
		
		//对字符串按照长度比较
		String s1 =(String)o1;
		String s2 =(String)o2;
		
		//比较长度
		int temp =s1.length()-s2.length();
		
		//长度相同,再按照字典顺序
		return temp==0?s1.compareTo(s2):temp;
		
	}

}

  

TreeSet典型例子两个 比较器?

标签:重复   port   java   还需   class   private   for   util   test   

原文地址:http://www.cnblogs.com/youning/p/7376625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!