我可以查询一个列表吗?Java的

TCM*_*TCM 7 java

说我有

List<SomeObject> objList = new ArrayList<SomeObject>();
Run Code Online (Sandbox Code Playgroud)

如果someObject包含名为id的字段.我们可以通过一些查询来找到它

objList.filter('id=2');

没有循环列表?如果没有,那么为什么呢?这可以是一个非常有用的方法,并用作替代写繁琐的循环?

RoT*_*oRa 8

具有功能性,良好功能的库(例如functionaljava)提供了这样的方法.

您需要使用自己的List实现,它与本机Javas不兼容(Array)List或在两者之间进行转换.

一个例子:

import fj.data.Java
import fj.data.List
import fj.F

// Converting an ArrayList
fj.data.List<SomeObject> objList2 = Java.ArrayList_List().f(objList);

fj.data.List<SomeObject> filteredObjList = objList2.filter(new F<SomeObject, Boolean>() {
  Boolean f(SomeObject c) { return c.id == 2; } 
});

// Converting back to ArrayList
java.util.List<SomeObject> objList2 = Java.List_ArrayList().f(filteredObjList );
Run Code Online (Sandbox Code Playgroud)

通过List在项目中使用functionaljava ,您可以避免转换.


wha*_*ley 1

如果你想要像 linq for java 这样的东西,请查看quaere


编辑:此时,quaere 看起来没有维护。随着 Java 7 即将停产,您应该使用 Java 8,与 Linq 的点语法相比, Java 8 的Stream API应该可以帮助您实现大部分目标。请参阅本页了解一些示例。