在数据结构中的某个条件上迭代集合

时间:2015-06-22 05:12:51

标签: java guava

我创建了如下所示的数据结构,这是基于谷歌的guava表,它显示在下面

final Table<String, String, List<String>> values = HashBasedTable.create();
        values.put("bon", "currency", Lists.newArrayList("ccdd","rode1","cwey","Certy"));
下面是我在迭代这个集合的方式

Map <String , List<String>>fmap = new  HashMap < String , List<String>>();      
for (Cell<String, String, List<String>> cell1: values.cellSet()){
    if (cell1.getRowKey() != null && cell1.getRowKey().equalsIgnoreCase("bon") )
                {
                fmap.put(cell1.getColumnKey(), cell1.getValue());
            }
        }

现在我想修改我的条件,如果行键包含bon的值 并且列键包含这些值&#34; ccdd&#34;,&#34; rode1&#34;,&#34; cwey&#34;,&#34; Certy&#34;那么它应该填满地图 命名为fmap,使迭代贴图看起来像这样

Key        Value 
ccdd        currency
rode1       currency
cwey        currency    
Certy       currency

请告知如何实现这一目标 因为解决方案建议仍然无法正常工作

1 个答案:

答案 0 :(得分:1)

而不是迭代Guava表中的所有值。尝试使用行键bon获取行,然后遍历有效的列键以填充地图。

Map <String , List<String>>fmap = new  HashMap < String , List<String>>();   
List<String> validColumnKeys = Arrays.asList("ccdd","rode1","cwey","Certy"); 
Map<String, List<String>> row = values.row("bon");
for(String columnKey:validColumnKeys) {
    fmap.put(columnKey, row.get(columnKey));
}