- 要从一个List<Person>集合中,找出Person的id为id1的对象,除了遍历有什么更简便的写法?我记得c#中可以直接find,就一行代码?
- 想让一个List<Person>集合中,所有元素的id作为一个数组输出如[id1,id2,id3...],除了遍历有什么简便写法?
一句话:目前的 Java 不能很好地支持这种函数式风格的集合操作。等 Java 8 的 lambda 出来之后可能会好些。
如果 lz 一定要用:
之前找到过一个库: http://code.google.com/p/lambdaj/ 代码写出来大概是这样子的:
List<Person> p1 = filter(having(on(Person.class).getId(), equalsTo(1)), list);
算是我找到的写出来的代码最像 LINQ 的库了。
用Java 8 Stream API:
Optional<Person> result = persons.stream().filter(p -> p.getId() == id1).findFirst();
int[] ids = persons.stream().mapToInt(p -> p.getId()).toArray();
更多可以參閲:
java.util.stream 库简介
Java 8 中的 Streams API 详解
What's New in Java 8
8 回答6.6k 阅读
4 回答711 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答974 阅读✓ 已解决
可能不太简洁,但是可以自己写: