拆分一串值并将它们放入表中

时间:2014-06-25 21:59:01

标签: java

我有一个具有键和值对的查找表,如下所示:

Key|Value
abc|a,b,c
def|a,b,c
fes|a,d,c

我要做的是将它们放在如下所示的列表中,每个值都在一个单独的列中

"abc",a,b,c
"def",a,b,c
"fes",a,d,c

以下是我的代码:

public class Schema {
    public static HashMap<String, ArrayList<String>> tableList = new HashMap<String, ArrayList<String>>();  
    static 
    {
        LookupTable SchemaLookup = ContextFactory.getCurrentContext().getLookupTableManager().getLookupTable("File Layout");
        Collection<LookupTableEntry> mappings = SchemaLookup.getLookupTableEntries();
        try {
            Iterator<LookupTableEntry> mappingsIterator = mappings.iterator();
            while (mappingsIterator.hasNext()) {
                LookupTableEntry entry = mappingsIterator.next();
                String key = entry.getKey();
                List<String> values = entry.getValues();
                ArrayList<String> arrayValues = new ArrayList<String>(values);
                tableList.put(key, arrayValues);
            }
        }finally {
        }
    }
}

现在这将所有值作为一个返回,但我希望将其作为单独的列。关于如何用逗号分割值并单独添加它们的任何想法? (所有人的表格大小应为4,现在为2)

谢谢!

2 个答案:

答案 0 :(得分:1)

我将假设您不想或不能更新创建LookupTableEntry个实例的代码。所以你所能做的就是阅读这一个元素"a,b,c",将其拆分为,并将拆分元素放入另一个集合中。

这样做可以使用像

这样的东西
List<String> values = entry.getValues();
ArrayList<String> arrayValues = new ArrayList<String>();

for(String token : values.get(0).split(",")){
    arrayValues.add(token);
}    

tableList.put(key, arrayValues);

或单行

tableList.put(key, new ArrayList(Arrays.asList(entry.getValues().get(0).split(",")))); 

答案 1 :(得分:1)

您必须在values列表的第一个元素中拆分字符串:

ArrayList<String> arrayValues = 
               new ArrayList<String>(Arrays.asList(values.get(0).split(",")));
tableList.put(key, arrayValues);

values列表的索引0处的元素是“a,b,c”。你拆分它,得到像{"a","b","c"}这样的数组并从中创建一个列表。