我一直在尝试搜索,但似乎找不到一些关于如何Linq4j
用于存储在java.util.Map
.
有人可以提供一些关于如何Linq4j
用于此目的的链接或示例吗?
Linq4j 对使用列表有很好的支持。例如 net.hydromatic.linq4j.Linq4j.asEnumerable(List) (有关更多方法,请参见 javadoc http://www.hydromatic.net/linq4j/apidocs/net/hydromatic/linq4j/Linq4j.html )。
final List<Employee> employees = Arrays.asList(
new Employee(100, "Fred", 10),
new Employee(110, "Bill", 30),
new Employee(120, "Eric", 10),
new Employee(130, "Janet", 10));
final List<Employee> result = new ArrayList<Employee>();
Linq4j.asEnumerable(employees)
.where(
new Predicate1<Employee>() {
public boolean apply(Employee e) {
return e.name.contains("e");
}
})
.into(result);
对 Map 的支持并不多。您可以使用 Map 上生成集合的方法:Map.keySet()、Map.values() 和 Map.entrySet()。例如,
final List<Grouping<Object, Map.Entry<Employee, Department>>> result =
new ArrayList<Grouping<Object, Map.Entry<Employee, Department>>>();
Linq4j.asEnumerable(empDepts.entrySet())
.groupBy(
new Function1<Map.Entry<Employee, Department>, Object>() {
public Object apply(Map.Entry<Employee, Department> entry) {
return entry.getValue();
}
})
.into(result);
最后,请注意 Enumerable 中有几个 toMap 方法。这些对于填充地图很有用。