【问题标题】:Can we use Linq for geting value from collection object in java?我们可以使用 Linq 从 Java 中的集合对象中获取值吗?
【发布时间】:2011-08-23 09:01:35
【问题描述】:

现在有一天我正在研究黑莓,我将一些 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 实现吗?

【问题讨论】:

  • 是的,请参阅我的完整回复。

标签: java linq blackberry


【解决方案1】:

【讨论】:

    【解决方案2】:

    嗯……是的!但是你需要这个库来处理 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);
      }
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        正如大家所说,Java 没有 LINQ,因为这只是 .NET 技术。

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

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

        【讨论】:

          猜你喜欢
          • 2012-12-04
          • 1970-01-01
          • 2014-02-01
          • 2015-03-10
          • 2015-01-14
          • 2014-02-23
          • 1970-01-01
          • 1970-01-01
          • 2012-05-31
          相关资源
          最近更新 更多