Reordenar resultado

3 respostas
jeovane.reges
Olá pessoal, boa noite. Galera tenho o seguinte resultado abaixo que é obtido após percorrer um Map.
Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#nomePai>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Pai>

Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#isbn>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Livro>

Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#nomeLivraria>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Livraria>

Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#nomeLivro>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Livro>

Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#nomeMae>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Mae>

Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#nomeAutor>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Autor>
Como pode ser visto, existem Value que aparecem mais de uma vez como é o caso de Livro. O que eu gostaria de fazer era o seguinte, a partir do Value agrupar as chaves em um só local, por exemplo:
Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#isbn>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Livro>

Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#nomeLivro>
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Livro>
Como pode ser visto no resultado acima, existem duas chaves para Livros o que eu gostaria era que esse resultado ficasse da seguinte maneira abaixo:
Value: <http://www.owl-ontologies.com/Ontology1354556097.owl#Livro>
         Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#nomeLivro>
         Key: <http://www.owl-ontologies.com/Ontology1354556097.owl#isbn>

Alguém poderia me dar uma dica de como fazer isso?
Desde de já obrigado pela ajuda de todos.
Abraço.

3 Respostas

E

Crie um Map <String, List >
(por exemplo; na verdade, conforme eu me lembro do seu post, o tipo não era String e sim um DomainAlgumaCoisa. Mas a idéia é essa: um Map cuja Chave é de um tipo T, e cujo Valor é uma Lista de tipo U.

jeovane.reges

Pois é entanglement, conseguir obter as duas coisas a parte a partir de um Map<K,V>.

No entanto, não tinha como passar o valor que é obtido em “Value” como “Key” (que seria o ideal), pois sendo assim ele pegava apenas o primeiro resultado e ignorava os demais.

O que você estar dizendo é pra mim criar um novo Map<K,V> e a partir dos resultados obtidos através do meu primeiro Map realoca-los no segundo?

jeovane.reges

Tentei da seguinte maneira abaixo, mas todos os "Values" são alocados a cada "Key".
Gostaria que as "Keys" recebessem apenas os seus respectivos valores.
O que é necessário alterar no código abaixo para funcionar dessa maneira que quero?

Map<Object, List<Object>> mapString = new HashMap<>();
List<Object> listObjects = new ArrayList<>();
for (Iterator it = propertyDomain.entrySet().iterator(); it.hasNext();){
    Map.Entry entry = (Map.Entry) it.next();
    listObjects.add(entry.getKey());
    mapString.put(entry.getValue(), listObjects);
}

for (Iterator it = mapString.entrySet().iterator(); it.hasNext();){
    Map.Entry entry = (Map.Entry) it.next();
    System.out.println("Key: " + entry.getKey() + "\nValue: " + entry.getValue());
}
Criado 4 de dezembro de 2012
Ultima resposta 4 de dez. de 2012
Respostas 3
Participantes 2