我们可以使用 Linq 从 java 中的集合对象中获取值吗?



现在我正在黑莓上工作了一天,我将一些 JSON 数组解析为字符串,然后从中将其转换为哈希表,如下所示

这是我的 JSON 字符串

[ 
  { 
        "StdID":"A1",
  "RollNo":"23",
 "Class":"First"
}, 
{ 
        "StdID":"A2",
  "RollNo":"13",
 "Class":"First"
}, 
{ 
        "StdID":"A3",
  "RollNo":"53",
 "Class":"Second"
}, 
{ 
        "StdID":"A4",
  "RollNo":"33",
 "Class":"Third"
}, 
]

我将其解析为哈希表

Hashtable t1=new Hashtable();
t1.put("StdID","A1");
t1.put("RollNo","23");
t1.put("Class","First");
Hashtable t2=new Hashtable();
t2.put("StdID","A2");
t2.put("RollNo","13");
t2.put("Class","First");
Hashtable t3=new Hashtable();
t3.put("StdID","A3");
t3.put("RollNo","53");
t3.put("Class","Second");
Hashtable t4=new Hashtable();
t4.put("StdID","A4");
t4.put("RollNo","33");
t4.put("Class","Third");
Hashtable main=new Hashtable ();
main.put(new Integer(1), t1);
main.put(new Integer(2), t2);
main.put(new Integer(3), t3);
main.put(new Integer(4), t4);

那么我可以/我如何检索值作为

选择拥有头等舱的学生

所以有人可以帮助我吗?这可以通过 LINQ 实现吗?

No.LINQ 是 .NET 的一部分,而不是 Java。

参见

  • LINQ for Java 工具
  • 有没有像 LINQ for Java 这样的东西?
  • LINQ 的 Java 等效项是什么?

嗯...是的!但是你需要这个库来做Java LINQ的东西://github.com/nicholas22/jpropel-light

怎么做:

import java.util.Hashtable;
import lombok.ExtensionMethod;
import propel.core.utils.Linq;
import java.util.List;
import lombok.Function;
@ExtensionMethod({Linq.class})
public class Main
{
  public static void main(String[] args)
  {
    Hashtable t1=new Hashtable();
    t1.put("StdID","A1");
    t1.put("RollNo","23");
    t1.put("Class","First");
    Hashtable t2=new Hashtable();
    t2.put("StdID","A2");
    t2.put("RollNo","13");
    t2.put("Class","First");
    Hashtable t3=new Hashtable();
    t3.put("StdID","A3");
    t3.put("RollNo","53");
    t3.put("Class","Second");
    Hashtable t4=new Hashtable();
    t4.put("StdID","A4");
    t4.put("RollNo","33");
    t4.put("Class","Third");
    Hashtable main = new Hashtable();
    main.put(new Integer(1), t1);
    main.put(new Integer(2), t2);
    main.put(new Integer(3), t3);
    main.put(new Integer(4), t4);
    List<Hashtable> result= main.values().where(classEquals("First")).toList();
    for(Hashtable ht : result)
      System.out.println(ht.get("StdID"));
  }

  @Function
  private static Boolean classEquals(Hashtable table, String _class) {
    return table.get("Class") != null && table.get("Class").equals(_class);
  }
}

no linq 适用于 .NET 3.5 或更高版本,不适用于 JAVA

正如所有人都说的那样,没有LINQ for Java,因为这只是.NET技术。

但是您可以使用提供类似功能的 API,例如 quaere

顺便说一句,其他人也问了类似的问题,请检查一下。

相关内容

  • 没有找到相关文章