java - Java流修改字符串
问题描述
我想请你们帮忙修改我使用 fp 的字符串列表。我是流 api 新手,有一些基本知识,但无法解决此任务。我有三个字符串列表,每个字符串都包含我的原始语言的电影标题和英文翻译,然后每个字符串列表都会映射。我想达到的结果是,我从用“>”分隔的列表中打印电影,然后当它切换到另一个列表时,我想放置“|”。例如:Zelazny czlowiek>IronMan|Msciciele>Avengers|Blyskawica>Flash
public Map<String, List<String>> getMovies() {
List<String> ironManTranslations = new ArrayList<>();
ironManTranslations.add("Żelazny Człowiek");
ironManTranslations.add("Iron Man");
List<String> avengersTranslations = new ArrayList<>();
avengersTranslations.add("Mściciele");
avengersTranslations.add("Avengers");
List<String> flashTranslations = new ArrayList<>();
flashTranslations.add("Błyskawica");
flashTranslations.add("Flash");
Map<String, List<String>> booksTitlesWithTranslations = new HashMap<>();
booksTitlesWithTranslations.put("IM", ironManTranslations);
booksTitlesWithTranslations.put("AV", avengersTranslations);
booksTitlesWithTranslations.put("FL", flashTranslations);
return booksTitlesWithTranslations;
}
public void printMovies(){
getMovies().values().stream().flatMap(movie -> movie.stream().map(s -> s + ">")).forEach(System.out::print);
}
解决方案
您可以使用map
运算符为每个列表创建翻译对。然后使用joining
收集器使用 | 将它们加入列表之间。操作员。这是它的外观。
String mStr = booksTitlesWithTranslations.values().stream()
.map(l -> l.get(0) + ">" + l.get(1))
.collect(Collectors.joining("|"));
推荐阅读
- vuejs2 - 遍历多个对象时在 VueJS 中很好地设置 tabIndex
- python - 在 Jupyter Notebook 中执行 Windows PowerShell 命令
- java - 静态兼实例变量
- c++ - boost函数的奇怪行为
- javascript - 根据页面(单元格)中的位置执行 JavaScript 函数?
- ssl - 使用现有证书在 SOLR 上启用 SSL
- wix - Wix Bootstrapper 检查 Net 4.5.2 然后下载它也检查 Windows 版本
- xml - 杰克逊 XML 冲突
- asp.net - vb.net Sys.WebForms.PageRequestManagerServerErrorException 错误
- c# - 将大型矢量图像转换为二进制矩阵的快速方法