编程题,1) 有以下一组字符串 2)13-1、13-108、13-18、100-11、10-15、14-2、14-1 3)编写程序,先按照前半部分的数字进行排序,再按照后半 部分的数字进行排序

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

第一种方法:

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);
	}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值