您的位置:首页 > 其它

Collections练习之按照字符串长度进行排序

2017-09-22 20:09 585 查看
  不多说,直接上干货!

[b]代码需求[/b]

  想从

[abcde, cba, aa, zzz, cba, nbaa]


  变成

[aa, cba, cba, zzz, nbaa, abcde]




[b]CollectionsDemo.java[/b]

package zhouls.bigdata.DataFeatureSelection.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;

import zhouls.bigdata.DataFeatureSelection.test.ComparatorByLength;

public class CollectionsDemo {
/**
* @param args
*/
public static void main(String[] args) {
/*
* Collections:是集合框架的工具类。
* 里面的方法都是静态的。
*/
demo();
}

public static void demo(){
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zzz");
list.add("cba");
list.add("nbaa");
System.out.println(list);

//对list集合进行指定顺序的排序。
Collections.sort(list);
mySort(list);
mySort(list,new ComparatorByLength());
Collections.sort(list,new ComparatorByLength());
System.out.println(list);
}

public static <T> void mySort(List<T> list,Comparator<? super T> comp){
for (int i = 0; i < list.size()-1; i++) {
for (int j = i+1; j < list.size(); j++) {
if(comp.compare(list.get(i), list.get(j))>0){
T temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
Collections.swap(list, i, j);
}
}
}
}

public static <T extends Comparable<? super T>> void mySort(List<T> list){
for (int i = 0; i < list.size()-1; i++) {
for (int j = i+1; j < list.size(); j++) {
if(list.get(i).compareTo(list.get(j))>0){
//                    T temp = list.get(i);
//                    list.set(i, list.get(j));
//                    list.set(j, temp);
Collections.swap(list, i, j);
}
}
}
}
}


[b]ComparatorByLength.java[/b]

package zhouls.bigdata.DataFeatureSelection.test;

import java.util.Comparator;

public class ComparatorByLength implements Comparator<String> {
public int compare(String o1, String o2) {
int temp = o1.length() - o2.length();
return temp==0?o1.compareTo(o2): temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐