繁体   English   中英

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

[英]Can we use Linq for geting value from collection object in java?

现在有一天,我在黑莓上工作,我将一些JSON数组解析为String,然后将其转换为Hashtable,如下所示

这是我的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有可能吗?

嗯...是的! 但是您需要此库来存储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);
  }
}

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

众所周知,没有LINQ for Java,因为这只是.NET技术。

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

BTW。 someonw别人也问过类似的问题,请检查出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM