Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Linq4j与内存中的基元列表和映射一起使用_Java_Linq4j - Fatal编程技术网

Java 将Linq4j与内存中的基元列表和映射一起使用

Java 将Linq4j与内存中的基元列表和映射一起使用,java,linq4j,Java,Linq4j,我一直在尝试搜索,但似乎找不到关于如何使用Linq4j处理java.util.Map中存储的内存中数据的示例 有人能提供一些关于如何使用Linq4j的链接或示例吗 Linq4j对使用列表有很好的支持。例如net.hydromatic.linq4j.linq4j.asEnumerable(列表)(更多方法请参见javadoc) final List employees=Arrays.asList( 新员工(100,“Fred”,10), 新雇员(110,“法案”,30), 新员工(120,“埃里克

我一直在尝试搜索,但似乎找不到关于如何使用
Linq4j
处理
java.util.Map
中存储的内存中数据的示例


有人能提供一些关于如何使用
Linq4j
的链接或示例吗

Linq4j对使用列表有很好的支持。例如net.hydromatic.linq4j.linq4j.asEnumerable(列表)(更多方法请参见javadoc)

final List employees=Arrays.asList(
新员工(100,“Fred”,10),
新雇员(110,“法案”,30),
新员工(120,“埃里克”,10岁),
新雇员(130,“Janet”,10岁);
最终列表结果=新建ArrayList();
Linq4j.可计算(员工)
.在哪里(
新谓词1(){
公共布尔应用(员工e){
返回e.name.contains(“e”);
}
})
.进入(结果);
对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);
最终列表结果=
新的ArrayList();
Linq4j.asEnumerable(empDepts.entrySet())
.群比(
新功能1(){
公共对象应用(Map.Entry){
返回条目.getValue();
}
})
.进入(结果);

最后,请注意Enumerable中有几个toMap方法。这些对填充映射很有用。

您还可以告诉我,当Linq4j执行某些查询时,它是否将列表或映射的内容复制到缓冲区或类似的位置;我担心的是,我的持久化映射可能包含数百万条它可以“迭代”的记录。最初,我问这个问题是为了一个内存映射,但我尝试的真正目的是持久化java.util.map:-)谢谢,看起来不错。我问这个问题是因为我正在寻找一种方法来查询我拥有的持久化映射项目:好在Linq4j有一种潜在的方法。顺便说一句,它不使用任何类型的太阳。对它进行反射,对吗?我的意思是,在我的情况下,GAE环境不允许这样做。。。
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);