其实这个用java.utils.Arrays这个对象里的sort(T[],Comparator)的这个方法就可以了。
String[] words = new String[] { "apple", "dog", "apple", "dog", "apple", "cat", "cat", "dog", "lamb" }; Arrays.sort(words, String.CASE_INSENSITIVE_ORDER);
这样words就已经被排序了。
Plus: Comparator用String自己带的比较器即可。CASE_INSENSITIVE_ORDER是一个大小写不敏感的比较器。
我尽量多写了几种数据结构,比较非主流,纯属娱乐
public static String[] sort(String[] strArr) {
if(null == strArr || strArr.length == 0){
return strArr;
}
Set
Map
int length = 0;
for (String str : strArr) {
set.add(str);
if (set.contains(str)) {
int sum = 1;
if (map.containsKey(str)) {
sum = map.get(str) + 1;
map.remove(str);
}
map.put(str, sum);
}
}
Iterator
while(it.hasNext()){
String s = it.next();
int j = map.get(s);
for(int i=0;i
length++;
}
}
return strArr;
}
拆分出来,逐个累计数量,可以借助Map的,再做排序
String [] str=new String[]{"apple","dog","apple","dog","apple","cat","cat","dog","lamb"};
List list=new LinkedList();
for(String s:str){
if(list.lastIndexOf(s)!=-1){
list.add(list.lastIndexOf(s), s);
}else{
list.add(s);
}
}
System.out.println(list);