Agrupar Objetos num list[RESOLVIDO]

Pessoal…
Estou com uma dúvida…

Por exemplo…
Tenho um List com um array de strings dentro com duas posições assim
List<String[]>…

onde o seu conteúdo seria por exemplo assim… na primeira posicao do string seria um cabeçalho e no segundo seria um numero representando quantidades

String{“A110” , “1”}, //Posição 0 do list
String{“A111” , “5”}, //Posição 1 do list
String{“A111” , “1”}, //Posição 2 do list
String{“A111” , “2”}, //Posição 3 do list
String{“A999” , “3”}, //Posição 4 do list

Então como faço para agrupar estes registros somando as quantidades…tipo o resultado teria que ficar assim

String{“A110” , “1”}, //Posição 0 do list
String{“A111” , “8”}, //Posição 1 do list
String{“A999” , “3”}, //Posição 2 do list

Pensei e criar um List temporario , depois excluir os repetidos, depois comparar com o array original, mas creio que assim daria muito processamento, já que esse list poderá ser de umas 2000 posições…

Naõ use um List<String[]> e sim um Map<String, Integer>, onde a chave (key) é por exemplo “A110” e o valor (value) é a contagem, no caso 8.

Caso não opite pelo Map, segue uma pequena solução para o seu problema, talves tenha resolvido, se n tiver erros de compilação ou de logica:

Ps: Altamente aconselhavel usar Map nesse caso.

[code]import java.util.*;

public class Test {
private List<String[]> list = new LinkedList<String[]>();

public static void main(String[] args) {
	Test sh = new Test();
	sh.list.add(new String[] { "A110", "1" });
	sh.list.add(new String[] { "A111", "5" });
	sh.list.add(new String[] { "A111", "1" });
	sh.list.add(new String[] { "A111", "2" });
	sh.list.add(new String[] { "A999", "3" });
	List<String[]> aux = new LinkedList<String[]>();
	boolean[] flags = new boolean[sh.list.size()];
	for (int i = 0; i < sh.list.size(); ++i) {
		if (!flags[i]) {
			String[] temp = { sh.list.get(i)[0], sh.list.get(i)[1] };
			for (int j = 0; j < sh.list.size(); j++) {
				if (i != j && !flags[j]) {
					if (sh.list.get(i)[0].equals(sh.list.get(j)[0])) {
						temp[1] = (Integer.parseInt(temp[1]) + Integer.parseInt(sh.list.get(j)[1]))+"";
						flags[j] = true;
					}
				}
			}
			aux.add(temp);
		}
	}
	sh.list = aux;
	for (String[] i : sh.list) {
		System.out.println(i[0] + " " + i[1]);
	}
}

}[/code]

Obrigado pelos esclarecimentos… bem…segui a sua idéia e resolvi o problema…
Quanto a objeto Map… a princípio não seria um inteiro a ser usado na segunda posição do array de string e sim mais uma string…
Somente depois que foi mudado para inteiro…por isso não posso mecher esse tipo de objeto…senão vou ter que vasculhar um sistema inteiro…

Mas qual a razão…do Map?, claro…além da eliminação do cast para inteiro…?

Eh que o MAP acessa por indice não repetido, se ja tiver um Indice por ex: A100, ele não cria outro com outro valor, apenas substitui o mesmo, ai vc faz as modificações antes de substituir…

Como faria o mesmo com map???