Java字符串的字符进行排序

要求:
对 “abc”,“fcc”,“egfd”,“asd”,“rtgh”,“deghk”,"fcc"字段进行排序,要求满足其为升序排列同时每个字符串里也是升序排列

思路:

  • 方法1:冒泡排序 :
    思路:先获取字符串数组里的每个字符串,然后使用toCharArray()方法得到这个字符串的char[] 再对char数组里的元素进行对比,冒泡排序前面大的与后面交换顺序,再把得到的char数组重新转换为String,存入到一个新的String数组中,然后在整体对新数组中各个字符串使用冒泡排序从而得到结果)
  • 方法2:使用 Arrays.sort(s);方法进行排序
import java.util.Arrays;
public class 字符排序 {
	public static void main(String[] args) {
		String[] str  = new String[]{"abc","fcc","egfd","asd","rtgh","deghk","fcc"};

		/*方法1:冒泡排序   :
			思路:先获取字符串数组里的每个字符串,然后使用toCharArray()方法得到这个字符串的char[] 再对char数
				组里的元素进行对比,冒泡排序前面大的与后面交换顺序,再把得到的char数组重新转换为String,存入到一个新的String
				数组中,然后在整体对新数组中各个字符串使用冒泡排序从而得到结果)
		 */
		printArr(stringRank(test(str)));

		//方法2:使用 Arrays.sort(s);方法进行排序
		String[] s = sortChar(str);
		Arrays.sort(s);
		printArr(s);
	}

	//得到一个每个字符串里元素已经进行过排序的新字符串数组
	private static String[] test(String[] str){
		String st[] =  st = new String[str.length];
		for (int i = 0; i < str.length; i++) {
			char[] c =  str[i].toCharArray();
			charRank(c);
			String s = new String(c);
			st[i]  = s; 
		}
		return st;

	}

	//对字符串里元素进行排序
	private static void charRank(char[] c){
		for (int j = 0; j < c.length; j++) {
			for (int j2 = 0; j2 < c.length-j-1; j2++) {
				if(c[j2]>c[j2+1]){
					char len = c[j2];
					c[j2] = c[j2+1];
					c[j2+1] = len;
				}
			}
		}

	}

	/*
	 对新字符串数组里的字符串进行排序(升序)字符串比较使用compareTo()方法,
	String本身并不具备比较大小功能,它的String对象实现了Comparable接口,这个接口是具有比较大小功能的接口,里面定义了比较方法compareTo()方法,
	所以如果我们定义了一个类,这个类产生的对象需要比较大小就需要去实现Comparable接口,重写compareTo()方法,这种
	排序成为类的自然排序,compareTo()方法称为自然比较方法,因为String类已经实现了compareTo()方法,所以这里可以直接使用
	该方法的比较对象与指定对象的顺序。
	compareTo(T  o)    返回值:int  返回0(两者相等),负数(对象小于参数),正数(对象大于参数)     参数o为要比较的对象
	 */
	private static String[] stringRank(String[] str) {
		for (int i = 0; i < str.length; i++) {
			for (int j = 0; j < str.length - i - 1; j++) {
				if (str[j].compareTo(str[j + 1]) > 0) {
					String s = str[j];
					str[j] = str[j + 1];
					str[j + 1] = s;
				}
			}
		}
		return str;
	}

	//方法2
	private static String[] sortChar(String[] str) {
		String[] s = new String[str.length];
		for (int i = 0; i < str.length; i++) {
			char[] c = str[i].toCharArray();
			Arrays.sort(c);
			s[i] = String.valueOf(c);
		}
		return s;
	}

	//打印字符串数组
	private static void printArr(String[] str){
		for (int i = 0; i < str.length; i++) {
			System.out.print(str[i]+"\t");
		}
		System.out.println();
	}


}

————————————————
版权声明:本文为CSDN博主「qq_37850436」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37850436/article/details/79464662

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来lai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值