0

我目前有一个程序,它将一组值从哈希映射传递到另一个将它们存储为字符串的类。存储在字符串中的信息如下:

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]]

我试图将它们分成(fe):

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;
}

这样,我可以将此集合传递给需要它们的类,并且可以进一步迭代它以获取键的值。

我将保持开放状态,因为进一步的答案可能会帮助有类似字符串问题的人!

4

3 回答 3

1

使用谷歌的图书馆番石榴

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));
}
于 2012-08-09T03:39:57.920 回答
1

如果您正在控制字符串的格式,则可以将它们格式化为json并在那里使用解析。

于 2012-08-09T03:10:08.977 回答
1

我不确定你为什么以这种方式工作:) 其他类接受 HashMap 并以同样的方式处理它不是更容易吗?如果要将其输出到文件,则可以将其序列化;哈希图是可序列化的。

于 2012-08-09T03:19:21.287 回答