【发布时间】:2019-09-27 09:35:55
【问题描述】:
我有一个单词列表:List<Word> words
豆Word是:
public class Word {
private String name;
private String meaning;
...
}
我想将元素改组为以下内容:
发件人:
{ name: "day", meaning: "giorno"},
{ name: "year", meaning: "anno"},
{ name: "hour", meaning: "ora"}
收件人:
{ name: "day", meaning: "ora"},
{ name: "year", meaning: "giorno"},
{ name: "hour", meaning: "anno"}
我已经尝试过了,但我认为有一个更优雅的解决方案:
private List<Word> shuffle(List<Word> words) {
List<String> names = words.stream()
.map(word -> word.getName())
.collect(Collectors.toList());
List<String> meanings = words.stream()
.map(word -> word.getMeaning())
.collect(Collectors.toList());
Collections.shuffle(meanings);
words = new ArrayList<Word>();
for(int i = 0; i<names.size(); i++) {
words.add(new Word(names.get(i), meanings.get(i)));
}
return words;
}
【问题讨论】:
-
@michalk 请阅读完整的问题,而不仅仅是标题:D
-
@Januson 请阅读完整的问题,而不仅仅是标题:D
-
@NikNik 你想要就地改组吗?我的意思是应该更新原始列表还是要一个新列表?
-
@MushifAliNawaz 它对我来说并没有太大变化,所以两种解决方案都有效
-
Word类似乎有点没用,如果您要不断更改meaning的值。
标签: java java-8 java-stream shuffle