gpt4 book ai didi

java - 使用 Lambda 在 Java 中合并两个不同类型(字符串和整数)的排序列表

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:08:14 25 4
gpt4 key购买 nike

合并列表 [“A”、“XYZ”、“AXTU”] 和 [2, 4, 6]

其中第一个列表按字长排序。如果第一个列表中的字符串长度与第二个列表中的数字相同,则首先出现的字符串应如下所示:

[“A”, 2, “XYZ”, “AXTU”, 4, 6].

我试过这样的:

Stream<String> stream = Stream.concat(list1.stream(), list2.stream().map(val -> Integer.toString(val)));
System.out.println(stream.sorted().collect(Collectors.toList()));

输出是这样的:

[2, 4, 6, A, AXTU, XYZ]

有解决这个问题的办法吗?提前致谢。 :)

最佳答案

更简单的解决方案是使用 Comparator.comparingInt :

List<Object> result = Stream
.concat(list1.stream(), list2.stream())
.sorted(Comparator.comparingInt(
obj -> obj instanceof String ? 2 * ((String) obj).length() : 1 + 2 * (Integer) obj))
.collect(Collectors.toList());

关于java - 使用 Lambda 在 Java 中合并两个不同类型(字符串和整数)的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com