Método que retorne 2 valores

7 respostas
fabim

cleo.nascimento:
Olá pessoa, estou com uma dúvida; estou querendo retornar um objeto e uma variável do tipo string no return do método.

Minha dúvida é a seguinte: qual seria a melhor forma de fazer isso, digo qual seria o mais peformático.

  1. Se seria usando um Vector bidimencional, onde no primeiro indice iria o objeto e no segundo indice é a string.

  2. Ou se teria por um mapping ou outra coisa do tipo.

Agradeço desde de já!

um método retornando 2 valores nao me soa muito bem…

7 Respostas

J

Olha, sem pensar muito poderia ser assim:

public HashMap teste () {
   ........
   ........

   HashMap retorno = new HashMap();
   retorno.put("Retorno1","Valor1");
   retorno.put("Retorno2","Valor2");

   return retorno;
}
rodrigoallemand

Crie um objeto seu que encapsule os seus possiveis retornos…

T

Em C++ isso é tão comum que existe um “template” chamado pair.

Por exemplo:

pair<double, double> getCoords() {
    return make_pair<double,double>(2.3, 4.5);
}

Agora falando em javanês.
Você pode ter uma classe que serve só para retornar pares. Exemplo:

class Pair<T, U> {
    private T t;
    private U u;
    public Pair(T t, U u) { this.t = t; this.u = u; }
    public T getT() { return t; }
    public U getU() { return u; }
}
...
Pair<Double,Double> getCoords() {
    return new Pair<Double,Double>(2.3, 4.5);
}
zepunk

Acho que uma solução boa seria criar um objeto no qual você possa encapsular os dois valores dentro do objeto, agora contextualmente falando não for pertinente, uma boa opção é o Map.

Daniel_Quirino_Olive

thingol:
Em C++ isso é tão comum que existe um “template” chamado pair.

Por exemplo:

pair<double, double> getCoords() {
    return make_pair<double,double>(2.3, 4.5);
}

Agora falando em javanês.
Você pode ter uma classe que serve só para retornar pares. Exemplo:

class Pair<T, U> { private T t; private U u; public Pair(T t, U u) { this.t = t; this.u = u; } public T getT() { return t; } public U getU() { return u; } } ... Pair<Double,Double> getCoords() { return new Pair<Double,Double>(2.3, 4.5); }

Ohh! Pairs! Bem lembrado, thingol (e lá se vão 8 anos desde que eu brincava com MFC :stuck_out_tongue: )

T

Agora falando sério. É difícil em Java termos um “pair”. Na prática usamos objetos mesmo, por exemplo:

class DadosUsuario {
    public String nome;
    public String endereco;
}

Mesmo sem getters / setters, é muito mais claro criar uma classezinha só para isso, que usar Pair<String,String> (que monstro é esse?). Só dei o exemplo do “pair”, porque às vezes é interessante usar um recurso desses.

Cleo_Nascimento

Olá pessoa, estou com uma dúvida; estou querendo retornar um objeto e uma variável do tipo string no return do método.

Minha dúvida é a seguinte: qual seria a melhor forma de fazer isso, digo qual seria o mais peformático.

  1. Se seria usando um Vector bidimencional, onde no primeiro indice iria o objeto e no segundo indice é a string.

  2. Ou se teria por um mapping ou outra coisa do tipo.

Agradeço desde de já!

Criado 22 de janeiro de 2007
Ultima resposta 22 de jan. de 2007
Respostas 7
Participantes 7