Java学习笔记之“字符串数组排序”

本文为在How2j的学习总结,只代表个人见解,如有不妥,望指出以便更正。

问题描述:创建一个长度是8的字符串数组,使用8个长度是5的随机字符串初始化这个数组,对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序

import java.util.Arrays;

public class Test_String_sort {
	
	// 字符串数组排序
//	创建一个长度是8的字符串数组
//	使用8个长度是5的随机字符串初始化这个数组
//	对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
	
	private static String getrandomstr(int length) {
		// 定义一个静态的方法,讲方法与main()分离,减少耦合,方便修改
		// 随机字符串的产生
		char[] cs = new char[length];
		String pool = "";
		for(short i='0'; i<='9'; i++) {
			pool = pool + (char)i;
		}
		for(short i='A'; i<='Z'; i++) {
			pool = pool + (char)i;
		}		
		for(short i='a'; i<='z'; i++) {
			pool = pool + (char)i;
		}
//		System.out.println(pool);
		for(int i=0; i<cs.length; i++) {
			int index = (int)(Math.random()*pool.length());
			cs[i] = pool.charAt(index);   //charAt()用于返回指定索引处的字符
		}
		String str = new String(cs);  //将字符数组转换为字符串输出
		return str;
	}
	private static void stringarraysort(String strA[]) {

		// 选择排序法
        for(int j=0; j<strA.length-1; j++) {
        	for(int i=j+1; i<strA.length; i++) {
        		char firstChar1 = strA[j].charAt(0);
        		char firstChar2 = strA[i].charAt(0);
        		firstChar1 = Character.toLowerCase(firstChar1);
        		firstChar2 = Character.toLowerCase(firstChar2);	
        		if(firstChar1>firstChar2) {
        			String temp = strA[j];
        			strA[j] = strA[i];
        			strA[i] = temp;
        		}
        	}
        }
        System.out.println("字符串数组排序后:"+Arrays.toString(strA));		
		
	}
	public static void main(String[] args) {
		String[] strA = new String[8];
		for(int i=0; i<strA.length; i++) {
			strA[i] = getrandomstr(5);
		}
		System.out.println("字符串数组排序前:"+Arrays.toString(strA));
		stringarraysort(strA);
	}

}

运行结果如下:

字符串数组排序前:[YpT1M, 8I894, piFRZ, Pw2zP, wCWVU, AG0SY, I35Gy, o2keK]
字符串数组排序后:[8I894, AG0SY, I35Gy, o2keK, Pw2zP, piFRZ, wCWVU, YpT1M]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值