Java字符串排序的几种实现方式

 更新时间:2023年07月21日 10:17:56   作者:是小浩呀~  
这篇文章主要给大家介绍了关于Java字符串排序的几种实现方式, 使用Java平台进行字符串排序被认为是一件简单的工作,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

创建实体类(此处引入了lombok)

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Test{
    private int Id;
    private String TestNo;
}

一、使用List集合中自带的sort方法(字符串的位数保持一致,不一致的情况可以在左边补0,也可以使用String.format()方法补全)

1、在对象排序中使用

public static void main(String[] args) {
        List<Test> testList= new ArrayList<>();
        testList.add(1,"22");
        testList.add(2,"11");
        testList.add(3,"44");
        testList.add(4,"33");
        list.sort((a,b)->a.getTestNo().compareTo(b.getTestNo()));
}

2、在字符串排序中使用

public static void main(String[] args) {
        List<String> testList= new ArrayList<>();
        testList.add("22");
        testList.add("11");
        testList.add("44");
        testList.add("33");
        list.sort(String::compareTo);
}

二、使用Stream流(字符串的位数保持一致,不一致的情况可以在左边补0,也可以使用String.format()方法补全)

1、在对象排序中使用

public static void main(String[] args) {
        List<Test> testList= new ArrayList<>();
        testList.add(1,"22");
        testList.add(2,"11");
        testList.add(3,"44");
        testList.add(4,"33");
        List<Test> sortList = testList.stream().sorted(Comparator.comparing(Test::getTestNo).collect(Collectors.toList());
}

2、在字符串排序中使用

public static void main(String[] args) {
        List<String> testList= new ArrayList<>();
        testList.add("22");
        testList.add("11");
        testList.add("44");
        testList.add("33");
        List<String> collect = testList.stream().sorted(Comparator.comparing(Objects::toString)).collect(Collectors.toList());
}

三、使用基数排序(此处仅展示对字符串进行排序,不需要补全位数)

class Quick3string{
	//三向字符串快速排序
	private static int charAt(String s, int d) {
		if(d < s.length()) {
			return s.charAt(d);
		}
		return -1;
	}
	public static void sort(String[] a) {
		sort(a, 0, a.length - 1, 0);
	}
	private static void sort(String[] a, int lo, int hi, int d) {
		if(hi <= lo) {
			return;
		}
		int lt = lo, gt = hi, i = lo + 1;
		int v = charAt(a[lo], d);
		while(i <= gt) {
			int t = charAt(a[i], d);
			if(t < v) {
				exch(a, lt++, i++);
			}else if(t > v) {
				exch(a, i, gt--);
			}else {
				i++;
			}
		}
		//a[lo..lt-1] < v = a[lt..gt] < a[gt+1..hi]
		sort(a, lo, lt - 1, d);
		if(v >= 0) {
			sort(a, lt, gt, d + 1);
		}
		sort(a, gt + 1, hi, d);
	}
	private static void exch(String[] a, int i, int j) {
		String t = new String(a[i]);
		a[i] = a[j];
		a[j] = t;
	}
	public static void main(String[] args) {
		String[] a = {"48328458C70490693231303331361020", "48326E48E1136A9E3139313131301020", "48326E48E1176F8A3139313131311020", "48326E48E12474713139313131311020"};
		Quick3string.sort(a);
		System.out.println(Arrays.toString(a));
	}
}

总结

到此这篇关于Java字符串排序的几种实现方式的文章就介绍到这了,更多相关Java字符串排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Javascript和Java语言有什么关系?两种语言间的异同比较

    Javascript和Java语言有什么关系?两种语言间的异同比较

    虽然Javascript与Java有紧密的联系,但却是两个公司开发的不同的两个产品。那么js和java有什么关系,两种语言的不同点是什么呢?介于这两个问题,小编一起给大家解答下
    2016-09-09
  • Java实现合并多个PDF的示例代码

    Java实现合并多个PDF的示例代码

    这篇文章主要介绍了通过Java实现合并多个PDF,并将合并后的新PDF存储到文件夹下,文中的示例代码简洁易懂,感兴趣的可以跟随小编一起试一试
    2022-01-01
  • RocketMQ Broker消息如何刷盘源码解析

    RocketMQ Broker消息如何刷盘源码解析

    这篇文章主要为大家介绍了RocketMQ Broker消息如何刷盘源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • JVM性能调优之运行时参数小结

    JVM性能调优之运行时参数小结

    jvm是java的运行环境,在jvm中有很多的参数可以进行设置,本文主要介绍了JVM性能调优之运行时参数小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • Java调用C++程序的实现方式

    Java调用C++程序的实现方式

    这篇文章主要介绍了Java调用C++程序的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java 实现汉字转换为拼音的实例

    Java 实现汉字转换为拼音的实例

    这篇文章主要介绍了Java 实现汉字转换为拼音的实例的相关资料,需要的朋友可以参考下
    2016-12-12
  • Java实现md5和base64加密解密的示例代码

    Java实现md5和base64加密解密的示例代码

    这篇文章主要介绍了Java实现md5和base64加密解密的示例代码,帮助大家更好的利用Java加密解密文件,感兴趣的朋友可以了解下
    2020-09-09
  • 一文彻底了解Java的组合模式

    一文彻底了解Java的组合模式

    组合模式(Composite Pattern)指将对象组合成树形结构以表示“部分-整体”的层次结构, 使得用户对单个对象和组合对象的使用具有一致性。本文就来带大家深入了解一下Java的组合模式吧
    2023-02-02
  • java 读写锁的使用及它的优点

    java 读写锁的使用及它的优点

    这篇文章主要介绍了java 读写锁的使用及它的优点,读写锁的特点就是是读读不互斥、读写互斥、写写互斥,下面具体使用分享需要的小伙伴可以参考一下
    2022-05-05
  • Java对象简单实用案例之计算器实现代码

    Java对象简单实用案例之计算器实现代码

    这篇文章主要为大家详细介绍了Java对象简单实用案例之计算器实现代码
    2016-11-11

最新评论