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字符串排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对Java中JSON解析器的一些见解

    对Java中JSON解析器的一些见解

    这篇文章主要是对Java中JSON解析器的一些见解。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • Spring Cloud zuul自定义统一异常处理实现方法

    Spring Cloud zuul自定义统一异常处理实现方法

    这篇文章主要介绍了Spring Cloud zuul自定义统一异常处理实现,需要的朋友可以参考下
    2018-02-02
  • Java GUI编程实现在线聊天室

    Java GUI编程实现在线聊天室

    这篇文章主要为大家详细介绍了Java GUI编程实现在线聊天室,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java实现顺序栈原理解析

    Java实现顺序栈原理解析

    这篇文章主要介绍了Java实现顺序栈原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java进阶之了解SpringBoot的配置原理

    java进阶之了解SpringBoot的配置原理

    今天带大家了解SpringBoot的相关知识,文中对SpringBoot的配置原理作了非常详细的图文示例及介绍,需要的朋友可以参考下
    2021-06-06
  • SpringBoot 如何使用RestTemplate发送Post请求

    SpringBoot 如何使用RestTemplate发送Post请求

    这篇文章主要介绍了SpringBoot 如何使用RestTemplate发送Post请求的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Redis 订阅发布_Jedis实现方法

    Redis 订阅发布_Jedis实现方法

    下面小编就为大家带来一篇Redis 订阅发布_Jedis实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Dubbo新版本zk注册中心连接问题及解决

    Dubbo新版本zk注册中心连接问题及解决

    这篇文章主要介绍了Dubbo新版本zk注册中心连接问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java中方法作为参数传递的方式

    Java中方法作为参数传递的方式

    这篇文章主要介绍了Java如何让方法作为参数传递,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Mybatis查询语句返回对象和泛型集合的操作

    Mybatis查询语句返回对象和泛型集合的操作

    这篇文章主要介绍了Mybatis查询语句返回对象和泛型集合的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论