- 要从一个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
15 回答8.4k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
可能不太简洁,但是可以自己写: