gpt4 book ai didi

java-8 - 返回所有交易名称的字符串,在 Java 8 中用空格按字母顺序排序?

转载 作者:行者123 更新时间:2023-12-01 14:11:44 25 4
gpt4 key购买 nike

我只是在玩 Java 8 流 并试图返回一个按字母顺序排序的所有交易者姓名的字符串。

public class PuttingIntoPractice {
public static void main(String[] args) {
Trader raoul = new Trader("Raoul", "Cambridge");
Trader mario = new Trader("Mario","Milan");
Trader alan = new Trader("Alan","Cambridge");
Trader brian = new Trader("Brian","Cambridge");

List<Transaction> transactions = Arrays.asList(
new Transaction(brian, 2011, 300),
new Transaction(raoul, 2012, 1000),
new Transaction(raoul, 2011, 400),
new Transaction(mario, 2012, 710),
new Transaction(mario, 2012, 700),
new Transaction(alan, 2012, 950)
);

// Query 4: Return a string of all traders’ names sorted alphabetically.
String traderStr = transactions.stream()
.map(t -> t.getTrader().getName())
.sorted()
.reduce("", (n1, n2) -> n1 + n2);
System.out.println(traderStr);
}
}

我得到的输出如下:

AlanBrianMarioMarioRaoulRaoul

我想像下面这样显示

 Alan Brian Mario Mario Raoul Raoul

我该怎么做?

我使用 lombok 生成所有这些样板的 setter getter

@Setter @Getter
@ToString
@AllArgsConstructor
public class Trader {
private String name;
private String city;
}

交易

@Setter @Getter 
@ToString
@AllArgsConstructor
public class Transaction {
private Trader trader;
private int year;
private int value;
}

最佳答案

您的代码中的问题是您如何减少 Stream

按照目前的写法,这个 reduce .reduce("", (n1, n2) -> n1 + n2); 将简单地连接 2 个 String,没有任何空格.要实现您想要的效果,您必须添加以将 n1 + n2 更改为 n1 + ""+ n2。但是,由于您希望将 Stream 的所有元素收集到单个 String 中,因此您应该使用 Collectors .

因此,您应该将代码更改为:

String traderStr = transactions.stream()
.map(t -> t.getTrader().getName())
.sorted()
.collect(Collectors.joining(" "));

关于java-8 - 返回所有交易名称的字符串,在 Java 8 中用空格按字母顺序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46969818/

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