作者gasbomb (虚空雷神兽)
看板java
标题Re: [问题]基础JAVA 空字串消不掉的原因
时间Thu Aug 27 15:30:35 2020
要筛选 Collection 里面的元素
开一个新的容器去接是比较合理的做法
像你原本在 for (int i = 0; i < list.size(); i++) 里面去 remove list 的元素
每 remove 一次长度就变短
到最後长度剩下 list.size() 只有 7 等於後面几个元素都没跑到
不知道你有没有用 IDE, 如果用 IntelliJ 的话 他的提醒功能其实比 Eclipse 强不少
像这种错误就会被他抓出来
两个版本给你参考一下
// 普通版
List<String> list = new ArrayList<>();
list.add("123");
list.add("333");
list.add("");
list.add("555");
list.add("666");
list.add("");
list.add("888");
list.add(" ");
list.add(" ");
list.add(" 999");
System.out.println("前" + list);
List<String> newList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
String s = list.get(i).trim();
if (s.length() != 0) {
newList.add(s);
}
}
System.out.println("後" + newList);
// lambda 版
List<String> list = new ArrayList<>();
list.add("123");
list.add("333");
list.add("");
list.add("555");
list.add("666");
list.add("");
list.add("888");
list.add(" ");
list.add(" ");
list.add(" 999");
System.out.println("前" + list);
List<String> newList = list.stream().map((s) -> s.trim())
.filter((s) -> s.length() != 0)
.collect(Collectors.toList());
System.out.println("後" + newList);
--
╔═◢ ◣═╦╦═════╦═════╗
║
◤◤◤ ◥ ╠╣
飞鸟ももこ╠═╗ ║
║ ▇ ▇ ║╚═════╝ ╚═╦═╣
║ ▌ ● ● ▌ ║╔══════╗╔═╩═╣
║
◤ ◥
︺█◤
◥╠╣
Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.28.7 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1598513438.A.78E.html
1F:推 akk98: 感恩 我蠢了 忘了砍掉後 我的长度会变短 傻了 = = 09/04 19:27