Jump to content

HashMap fica fazio


davide92
 Share

Recommended Posts

Boas noites a todos.

Tenho um programa em Java que está um bocado estranho.

Tenho algo assim

public static boolean Connect(String ip) throws Exception{ 
 boolean connected = true;
 try {
  if (debug == true) {
   System.out.println("Random IP: " + ip);
  }
  SocketAddress sockaddr = new InetSocketAddress(ip, TCP_Port);
  socket = new Socket();
  socket.connect(sockaddr, timeout);
  System.out.println("Successfully connected to " + ip);
  connected = true;
 } catch (UnknownHostException e) {
  System.out.println("Host not found: " + e.getMessage());
  connected = false;
  if (debug == true) {
   System.out.println("IP: " + ip);
  }
 } catch (IOException ioe) {
  System.out.println("I/O Error " + ioe.getMessage());
  connected = false;
  if (debug == true) {
   System.out.println("IP: " + ip);
  }
 }

 if(connected == false){
  return false;
 }else{
  PrintStream output = new PrintStream(socket.getOutputStream(), true);
  output.println("table");

  ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
  table.clear();
  table = (HashMap<String, Double>) ois.readObject();

  printMap(sortHashMapByValues(table));
  return true;
 }
}

Onde tenho previamente declarado acima:

private static HashMap<String, Double> table = new HashMap<String, Double>();

E nesta parte eu recebo de uma HashMap:

table = (HashMap<String, Double>) ois.readObject();

O problema é quando esse método acaba e continua o próxima onde eu vou usar esse HashMap que estranhamente está vazio :/

O que poderá ser ?

PS: Para chegar a essa função é feita através destes passos Main -> Connection -> Connect

Link to comment
Share on other sites

Estou a receber a HashMap com os valores desejados pois já fiz debug.

A sort apenas faz o sort e serve puramente para usar a do printMap. Basicamente são apenas para ter o meu "debug"

Como podes ver a printMap não é nada de especial:

public static void printMap(Map<String, Double> map) {
 for (Entry<String, Double> entry : map.entrySet()) {
  System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
 }
}
Edited by davide92
Link to comment
Share on other sites

O meu output é este:

Random IP: 192.168.1.99

Successfully connected to 192.168.1.99

Key : 192.168.1.79 Value : 0.2

Key : 192.168.30.67 Value : 0.5

Key : 169.254.251.144 Value : 2.2

Key : 172.18.26.254 Value : 2.2

Key : 192.168.1.105 Value : 2.5

Key : 192.168.1.99 Value : 2.5

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

at java.util.ArrayList.rangeCheck(Unknown Source)

at java.util.ArrayList.get(Unknown Source)

at cd.EchoClient2.Check_Load(EchoClient2.java:207)

at cd.EchoClient2.Connection(EchoClient2.java:155)

at cd.EchoClient2.main(EchoClient2.java:47)

Link to comment
Share on other sites

O problema é quando esse método acaba e continua o próxima onde eu vou usar esse HashMap que estranhamente está vazio :/

será que não sei ler ? não estará esta frase no teu primeiro post ?

Já sei qual era o problema, tinha a haver com o método sort. Ele retornava-me uma LinkedHashMap e apagava-me a outra.

- tens a função sortHashMapByValues mal implementada

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Sim tens razão, pensei que não fosse do sort. Peço desculpa.

Agora deparei-me com outro problema, tenho uma LinkedHashMap e não consigo passar para uma List

Tenho algo deste género mas não faz nada:

List<String> key_list = new ArrayList<String>(SortedMap.keySet());

Já resolvi, meti antes assim:

key_list.addAll(SortedMap.keySet());
Edited by davide92
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.