我目前有一个程序,它将一个值集合从一个hashmap传递给另一个将它们存储为字符串的类。存储在字符串中的信息是这样的:
Station 1=[1, Task 1, 10, false, 0, java.awt.Color[r=255,g=0,b=0]]
Station 2=[2, Task 2, 10, false, 0, java.awt.Color[r=0,g=0,b=255]]
Station 3=[3, Task 3, 10, false, 0, java.awt.Color[r=0,g=255,b=0]]
Station 4=[4, Task 4, 10, false, 0, java.awt.Color[r=255,g=200,b=0]]
Station 5=[5, Task 5, 10, false, 0, java.awt.Color[r=0,g=0,b=0]]
我正试图将它们分成(f.e。):
Station 1
1
Task 1
10
false
0
java.awt.Color[r=255,g=0,b=0]
我首先尝试拆分每个字符串但是因为字符串的最后一部分有“=”和“,”设置了颜色值,它会搞得一团糟。
我也尝试过StringTokenizer()但我在最后一部分也遇到了问题。
是否有更简单有效的方法根据需要拆分这些字符串?欢迎任何建议!
提前感谢您的时间,如果需要代码,请告诉我们!
修改
我通过正确地从哈希映射传递参数来修复我的特定问题。
public MultiMap stationmap = new MultiHashMap( );
public Collection getkeyValues(String s) {
Collection values = (Collection) stationmap.get(s);
return values;
}
这样,我可以将这个集合传递给我需要它们的类,我可以进一步迭代它以获取键的值。
我将保持开放,因为进一步的答案可能会帮助有类似字符串问题的人!
答案 0 :(得分:1)
如果您正在控制字符串的格式,可以将它们格式化为json并在那里使用解析。
答案 1 :(得分:1)
我不确定你为什么以这种方式工作:)另一个类是否更容易接受HashMap并以同样的方式处理它?如果您将其输出到文件,则可以将其序列化; hashmaps是可序列化的。
答案 2 :(得分:1)
使用google的库 guava :
public static List<String> convertToList(String str) {
List<String> list = Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str));
/**
Returns:
Station 1
1
Task 1
10
false
0
java.awt.Color[r=255,g=0,b=0]]
*/
int lastIndex = list.size() - 1;
String last = list.get(lastIndex);
String amendedValue = last.substring(0, last.length()-1);
list.set(lastIndex, amendedValue);
// Convert the last element "java.awt.Color[r=255,g=0,b=0]]" to "java.awt.Color[r=255,g=0,b=0]"
return list;
}
或者:
public static List<String> convertToList2(String str) {
str = str.substring(0, str.length()-1);
return Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str));
}