簡體   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