Можем ли мы использовать Linq для получения значения из объекта коллекции в Java? - PullRequest
2 голосов
/ 11 мая 2011

сейчас я работаю над ежевикой, в которой я анализирую JSON Array в 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?

Ответы [ 4 ]

4 голосов
/ 11 мая 2011
1 голос
/ 08 октября 2011

Хм ... да! Но вам нужна эта библиотека для Java LINQ: http://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);
  }
}
0 голосов
/ 11 мая 2011

Как все говорят, LINQ для Java отсутствует, поскольку это только технология .NET.

Но вы можете использовать API, которые предлагают аналогичные функции, например, спрашивается

КСТАТИ. кто-то еще также задавал подобный вопрос, пожалуйста, отметьте this out.

0 голосов
/ 11 мая 2011

Нет linq для .NET 3.5 или выше не для JAVA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...