0

我是 Java 的新手,必须对其他人提供给我的分隔符分隔数据进行一些操作,我已经从中获取了所需的字段并存储到字符串数组中。它看起来有点类似于以下内容:

     String [] toseparate =null;
     Vector <String> myVector = new Vector<String>();
     myVector.add (a xyz 12 b efg 13 a pqr 45 c erer 18 a vbv 27 d tag 40 c etc 16....)
    //These values are derived from a separate array which I've parsed based on delimiters.
     toseparate = myVector.toArray(new String[myVector.size()]);

(等等),这是一个长度在 50 个索引范围内且未排序的数组。结果应该是这样的:

    a,84,b,13,c,34....

(即字符串对应的数字之和)。除此之外,a、b、c... 的顺序无关紧要。我认为它也可以使用多维阵列(2D)来完成,并且会根据专家的建议改变方法。
请帮我解决这个问题。
太感谢了。

4

2 回答 2

0
Map<String, Integer> totals = new HashMap<String, Integer>();
for(int i = 0 ; i < myVector.size(); i += 3) {
    Integer total = totals.get(myVector.get(i));
    if(total == null) {
        total = 0;
    }
    total += Integer.parseInt(myVector.get(i + 2));
    totals.put(myVector.get(i), total);
}
于 2013-08-30T05:09:40.133 回答
0

为什么不使用 split() 函数来解析你的分隔字符串?看看: http: //pages.cs.wisc.edu/~hasti/cs302/examples/Parsing/parseString.html

无论您如何解析,看起来您的所有数据都是三元组,其中只有第一个和最后一个值很重要:

a xyz 12 b efg 13 a pqr 45 c erer 18 a vbv 27 d tag 40 c etc...

决议:

a 12 b 13 a 45 c 18 a 27 d 40 ...

假设,您可以循环遍历数组,并在进行时累积值。在伪代码中:

for( i = 0; i < array.length(); i+=3) {
    if(!map.containsKey( array[i] )) map.put( array[i], array[i+2] );
    else map.put( array[i], map.get( array[i] ) + array[i+2] );
}

对于地图,我想你可以使用 Hashmap<String,int>。

于 2013-08-30T04:56:45.563 回答