Ajuda com HashMap

3 respostas
F

Olá galera, tudo bem?

Tenho essa classe:

public class Cluster {
	private String radical;
	//private List<String> palavras;
	Map<String, List<String>> palavras = new HashMap<String, List<String>>(); //declara palavras como hasMap
	private String palavraRepresentante;

	public String getPalavraRepresentante() {
		return palavraRepresentante;
	}
	
	public void setPalavraRepresentante(String palavraRepresentante) {
		this.palavraRepresentante = palavraRepresentante;
	}
	
	public String getRadical() {		
		return radical;
	}
	
	public void setRadical(String radical) {
		this.radical = radical;
	}
	
	public Map<String, List<String>> getPalavras() {
		return palavras;
	}
	
	public void setPalavras(Map<String, List<String>> palavras) {
		this.palavras = palavras;
	}
	
	public void addPalavra(String palavra) { 
		
		String radical = null;
		ExtratorRadical rad = new ExtratorRadical(palavra);
		radical = rad.getRadical();
				
		//radical = palavra.substring(0,1); //pega a primeira letra de uma string
		//System.out.print(radical + ", ");
		
	    if (palavras.containsKey(radical)) {  //verifica se o radical existe no hashmap
	    	palavras.get(radical).add(palavra);  //add a palavra a lista
	    }  
	    else {  
	      List<String> pl = new LinkedList<String>();  //atribui uma nova lista
	      pl.add(palavra);  			//add a palavra a essa nova lista
	      palavras.put(radical.toUpperCase(), pl);  	//escreve o radical e a palavra a lista
	    }

	  }//fim addPalavra  
	
	
	public void mostraCluster() {  
	  for (Map.Entry<String, List<String>> entrada : palavras.entrySet()) {  
	    System.out.print(entrada.getKey() + ": [");  
	    imprimePalavras(entrada.getValue());  
	    System.out.print("]");  
	    System.out.println();  
	  }  
	}  
	  
	private void imprimePalavras(List<String> palavras) {  
	  Iterator<String> i = palavras.iterator();  
	  if (i.hasNext()) {  
	    System.out.print(i.next());  
	    while (i.hasNext()) {  
	      System.out.print(", " + i.next());  
	    }  
	  }  
	}
		
}

Preciso, em outra classe, criar um Map onde tenho <Integer, List>, onde irei copiar todoas as palavras, separadas por grupos. Exemplo:
1 --> Informatica, informatização
2 --> educação
3 --> Maravilha, Maravilhoso, maravilhado

e assim por diante.

Estou levando outro baile pra isso!!!

Tipo… deixa eu explicar melhor:

eu tenho esse HashMap q tá recebendo como key uma String e como value uma List certo?

então… eles estão numa classe chamada Cluster…

Tenho outra classe, essa chama Histograma… que eu quero q pegue os value dessa hashMap e insira nos value de uma Nova HashMap q vou criar com <integer, List> certo? Mas não consigo fazer isso!!!

Desde já, Obrigada
té mais

3 Respostas

javakid

Peraí, deixa ver se entendi:

vc tem “palavras” - String, List (da classe Cluster)

e tb tem um “x” - integer, List da (da classe Histograma) ?

aí vc quer transferir as List’s indexadas de um objeto para outro ?

B

Para lidar com um Map<Integer, List>, crie um método para inserir um par Integer, String.
Por exemplo:

public static void put (Map<Integer, List<String>> map, Integer i, String s) {
    List<String> where = map.get (i);
    if (where == null) where = new ArrayList<String>();
    where.add (s);
    map.put (i, where);
}
F

javakid:
Peraí, deixa ver se entendi:

vc tem “palavras” - String, List (da classe Cluster)

e tb tem um “x” - integer, List da (da classe Histograma) ?

aí vc quer transferir as List’s indexadas de um objeto para outro ?

Tipo tenho palavras que guarda na verdade o radical das palavras na key… e no value as palavras que tem akele radical

to querendo passar pra classe histograma somente as palavras… não o radical pq ele já filtrou pra mim e já classificou de acordo… portanto não preciso do radical…
como estava querendo passar pra outra hashmap e não teria o radical… pensei q pudesse a key ser integer e o value List que seriam as apalvras que eu desejo. Certo?

Criado 29 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 3
Participantes 3