Valores repetidos em um Sortedmap

Como eu faço para ver se os valores se repetem no sortedmap? Eu quero ver os valores não a chave

Valores podem se repetir em qualquer Map, somente as chaves não podem se repetir. O que você está fazendo?

Que podem se repetir eu sei, mas eu quero encontrar os valores iguais. Eu quero pegar os valores de uma coluna do excel e colocar dentro do sortedmap sendo que a chave vai ser o numero da linha, ai eu quero comparar esse valores. Tem como isso ser feito?

Uma forma de você verificar se há múltiplas ocorrências de um determinado valor é contar essas múltiplas ocorrências. É isso que você quer fazer, ou você quer uma lista “limpa”, ou seja, com apenas uma ocorrência de determinado valor?

IsaRakel, se o desempenho for uma preocupação e você quiser recuperar a quantidade de um cero valor, pode usar um mapa auxiliar.
Se você tiver acesso ao método que inclui os valores no SortedMap original, pode incluir os mesmos valores como chave de um segundo mapa cujo valor é a quantidade. Exemplo:

sortedMap.put(k, v);
if (qtdMap.contains(v)) {
  qtdMap.put(v, qtdMap.get(v) + 1);
} else {
  qtdMap.put(v, 1);
}

Dessa forma você terá instantaneamente a quantidade de qualquer um dos valores, embora use um pouco mais de memória e algum processamento inicial.

A mesma ideia poderia ser usada para obter um lista com chaves que contém. Exemplo:

sortedMap.put(k, v);
List<?> l = keyMap.get(v);
if (l != null) {
  l.add(k);
} else {
  l = new ArrayList<?>();
  l.add(k);
  keyMap.put(v,  l);
}

Dessa outra forma, dado um valor, você poderia obter através do keyMap a lista de chaves que contém o respectivo valor no mapa original.

Eu quero guardar os valores que se repetem sem tira-los do sortedmap, na verdade eu quero encotrar os valores que se repetem e pela chave desses valores (que a linha na coluna do excel) descobrir a linha onde ele esta.

Eu editei minha resposta anterior para ficar mais de acordo com sua pergunta.
Você não precisa tirar do sortedMap.
Com o segundo código que postei, além de armazenar o valor no sortedMap, você armazenaria, para cada valor, as respectivas chaves.

Se ficou muito confuso, esqueça tudo isso e provavelmente o exemplo abaixo ajude mais:

[code]SortedMap<Integer, String> m = new TreeMap<Integer, String>();
for (Iterator<Integer> i = m.keySet().iterator(); i.hasNext():wink: {

Integer linha = i.next();
String valor = m.get(linha);

if (valor == "xyz") {
	
	//usar a variável linha
	
}			

}[/code]

Se o teu problema é “Mostre todos as chaves com valores igual a valor X”, faça um for each Map.Entry<K,V> no map.entrySet(), e compare o teu valor X com cada Entry.getValue().

Se o teu problema é "Encontre todos os grupos de chaves agrupados por valor, faça um for each Map.Entry<K,V> no map.entrySet(), e com cada Entry, faça mais uma vez o for each comparando essa Entry com todos os valores de entries, e removendo essas entries para um grupo a cada valor igual encontrado, por questões de performance.

E uma lib que faz isso por você.

Digamos que eu tenha uma planilha assim:

+----+-------+
|    |   A   |
+----+-------+
|  1 | jose  |
|  2 | jose  |
|  3 | joao  |
|  4 | maria |
|  5 | jose  |
+----+-------+

Qual é a tal “linha onde ele está” no caso do elemento “jose”? 1, 2 ou 5? Ou você quer as três linhas?

Apesar de que será útil depois saber a quantidade, ainda não é isso que eu quero. Meu problema é o seguinte eu quero verificar se um numero é igual a outro em uma coluna X da tabela do excel, se encontrar um numero igual vou ver se nessas linhas (em que os valores são iguais) em determinadas colunas Y e Z tem valores que são iguais. Eu uso um sortedmap para guarda os valores da coluna X e a chave é a linha, uso outro sortedmap para guarda as informações de toda a tabela sendo que a chave também é a linha eu quero ver se encontro os valores iguais da coluna X para poder depois ir procurar no outro sortedmap se os valores da coluna Z e K são iguais naquelas linhas. Só que eu não sei como ver se os valores são iguais.

Digamos que eu tenha uma planilha assim:

+----+-------+
|    |   A   |
+----+-------+
|  1 | jose  |
|  2 | jose  |
|  3 | joao  |
|  4 | maria |
|  5 | jose  |
+----+-------+

Qual é a tal “linha onde ele está” no caso do elemento “jose”? 1, 2 ou 5? Ou você quer as três linhas?[/quote]

Eu quero as três linhas, sendo que provável maria e joao vão repetir também.