String 如何使用流API反转比较器顺序?
如果我想在返回的字符串中反转自然的字母顺序,而不编写特定的String 如何使用流API反转比较器顺序?,string,collections,java-8,java-stream,comparator,String,Collections,Java 8,Java Stream,Comparator,如果我想在返回的字符串中反转自然的字母顺序,而不编写特定的比较器,这样连接的字符串结果以名称“z…”、“y…”、“x…”等开头,我该怎么办 String obtained = transactions.stream() .map(Transaction::getTrader) .map(Trader::getName) .sorted(String::compareTo) .collect(Collectors.joining(",")); 请注意,它之所以有效
比较器,这样连接的字符串结果以名称“z…”、“y…”、“x…”等开头,我该怎么办
String obtained = transactions.stream()
.map(Transaction::getTrader)
.map(Trader::getName)
.sorted(String::compareTo)
.collect(Collectors.joining(","));
请注意,它之所以有效,是因为字符串实现了可比较的接口 在java中,类似这样的东西可以做到:
String obtained = transactions.stream()
.map(Transaction::getTrader)
.map(Trader::getName)
.sorted(String::compareTo)
.collect(Collectors.joining(","));
请注意,它之所以有效,是因为字符串实现了可比较的接口 按相反顺序对集合排序只需要一个操作
字符串实现可比较的接口。for java.lang.Comparable的#compareTo()表示它返回:
作为此对象的负整数、零或正整数
小于、等于或大于指定对象
要颠倒收款顺序,您可以:
[推荐]使用Comparator.reverseOrder()命令
返回一个比较器,该比较器对
指定比较器。(……)
[不推荐]更改compareTo()方法的符号。不建议这样做,因为它会导致Integer.MIN_值出现数字溢出
reversedOrderedStrings = strings.stream()
.sorted((s1, s2) -> s2.compareTo(s1))
.collect(Collectors.joining(","));
所有的输出都是相同的:
reversedOrderedStrings = strings.stream()
.sorted((s1, s2) -> -s1.compareTo(s2))
.collect(Collectors.joining(","));
按相反顺序对集合排序只需要一个操作
字符串实现可比较的接口。for java.lang.Comparable的#compareTo()表示它返回:
作为此对象的负整数、零或正整数
小于、等于或大于指定对象
要颠倒收款顺序,您可以:
[推荐]使用Comparator.reverseOrder()命令
返回一个比较器,该比较器对
指定比较器。(……)
[不推荐]更改compareTo()方法的符号。不建议这样做,因为它会导致Integer.MIN_值出现数字溢出
reversedOrderedStrings = strings.stream()
.sorted((s1, s2) -> s2.compareTo(s1))
.collect(Collectors.joining(","));
所有的输出都是相同的:
reversedOrderedStrings = strings.stream()
.sorted((s1, s2) -> -s1.compareTo(s2))
.collect(Collectors.joining(","));
你是对的,但问题是不要编写自己的比较器。我承认你的方法更快,必须使用。是的,我知道我能做到,我正在寻找Collection.reverseOrder()方法。我应该在我的答案中使用“排序(Comparator.reverseOrder())”,如中所述。@Holger-更正了答案。谢谢你的评论。你是对的,但问题是不要写你自己的比较器。我承认你的方法更快,必须使用。是的,我知道我能做到,我正在寻找Collection.reverseOrder()方法。我应该在我的答案中使用“排序(Comparator.reverseOrder())”,如中所述。@Holger-更正了答案。谢谢你的评论。这正是我所期待的!Thx,Tdrs我想你指的是Comparator.reverseOrder()
而不是Collection
,这正是我所期望的!Thx,Tdrs我想你指的是Comparator.reverseOrder()
而不是Collection