2011-11-23 42 views
1

如何使用lambdaj过滤表格?如何使用lambdaj或其他工具过滤表格

如下表:

 
id name age male salary 
1 tom 22 y  3k 
2 nancy 24 n  3.5k 
3 jack 22 y  2k 
4 jmme 29 y  4k 

如果我应用滤镜:

age >= 22 && salary > 3k 

然后我会得到:

 
2 nancy 24 n  3.5k 
4 jmme 29 y  4k 

如你所知,我不能创建一个域为它,它阻止我使用以下语法的类:

filter(having(on(Person.class).getAge(),greaterThan(22)), myManList); 

回答

1
 
/** 
     * 
     * 序号 年份 地区  GDP 
     * 1  2011 北京  1233 
     * 2  2010 天津  2412 
     * 3  2012 上海  1939 
     * 4  2009 深圳  1389 
     * 5  2013 重庆  1492 
     * */ 
     Table aTable = HashBasedTable.create(); 
     aTable.put("1", "id", "1"); 
     aTable.put("1", "年份", "2011"); 
     aTable.put("1", "地区", "北京"); 
     aTable.put("1", "GDP", "1233"); 

     aTable.put("2", "id", "2"); 
     aTable.put("2", "年份", "2010"); 
     aTable.put("2", "地区", "天津"); 
     aTable.put("2", "GDP", "2412"); 

     aTable.put("3", "id", "3"); 
     aTable.put("3", "年份", "2012"); 
     aTable.put("3", "地区", "上海"); 
     aTable.put("3", "GDP", "1939"); 

     aTable.put("4", "id", "4"); 
     aTable.put("4", "年份", "2009"); 
     aTable.put("4", "地区", "深圳"); 
     aTable.put("4", "GDP", "1389"); 

     aTable.put("5", "id", "5"); 
     aTable.put("5", "年份", "2013"); 
     aTable.put("5", "地区", "重庆"); 
     aTable.put("5", "GDP", "1492"); 


     List> li = filter(
        having(on(Map.class).get("年份"),isIn(Arrays.asList("2009","2011"))) 
        .and(having(on(Map.class).get("地区"),isIn(Arrays.asList("深圳")))) 
          ,aTable.rowMap().values()); 
     System.out.println(li); 
相关问题