java编程题:
1) 有以下一组字符串
2) 13-1、13-108、13-18、100-11、10-15、14-2、14-13) 编写程序,先按照前半部分的数字进行排序,再按照后半部分的数字进行排序,最终输出要为:
4) 10-15、13-1、13-18、13-108、14-1、14-2、100-11
第一种方法:
package hp.wk.demo08;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet;
public class Word01 {
/*
* 1、Java编程题
* 1) 有以下一组字符串
* 2) 13-1、13-108、13-18、100-11、10-15、14-2、14-1
* 3)编写程序,先按照前半部分的数字进行排序,再按照后半部分的数字进行排序,最终输出要为:
* 4)10-15、13-1、13-18、13-108、14-1、14-2、100-11
*/
public static void main(String[] args) {
String[] strs={"13-1","13-108","13-18","100-11","10-15","14-2","14-1"};
//先取出“-”的前半部分并且放到TreeSet里边
TreeSet<Integer> treeSet=new TreeSet<>();
for(int i=0;i<strs.length;i++){
treeSet.add(Integer.parseInt(strs[i].substring(0,strs[i].indexOf("-"))));
}
//System.out.println(treeSet);
//按照第一部分的开头将strs中的字符串排序存放到treeSet里
Iterator<Integer> it=treeSet.iterator();
while(it.hasNext()){
Integer perInt=it.next(); //把treeSet排序好的首部数字放到perInt里边
ArrayList<Integer> alist=new ArrayList<>();
for(String s:strs){
if(s.startsWith(perInt+"")){//判断是否是以前半部分开始的字符串,要加 "" ,不然返回的不是字符串
alist.add(Integer.parseInt(s.substring(s.indexOf("-")+1))); //将后半部分字符串放到alist中
}
}
Collections.sort(alist);
for(int i:alist){
System.out.println(perInt+"-"+i);
}
}
}
}
第二种方法:
public void test2() {
String[] strs = { "13-1", "13-108", "13-18", "100-11", "10-15", "14-2",
"14-1", "111-10", "10-18" };
TreeSet<String> set = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String prefix1=o1.substring(0,o1.indexOf("-"));
String prefix2=o2.substring(0,o2.indexOf("-"));
String lastFix1=o1.substring(o1.indexOf("-")+1);
String lastFix2=o2.substring(o2.indexOf("-")+1);
if(Integer.parseInt(prefix1)>Integer.parseInt(prefix2)){
return 1;
}else if(Integer.parseInt(prefix1)<Integer.parseInt(prefix2)){
return -1;
}else{
return Integer.compare(Integer.parseInt(lastFix1), Integer.parseInt(lastFix2));
}
}
});
for(String s:strs){
set.add(s);
}
System.out.println(set);
}