我有一个具有键和值对的查找表,如下所示:
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)
谢谢!
答案 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"}
这样的数组并从中创建一个列表。