标签:重复 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;
}
}
标签:重复 port java 还需 class private for util test
原文地址:http://www.cnblogs.com/youning/p/7376625.html