Usando o ref(c#) em java

7 respostas
L
Bom pessoal, estou fazendo uma arvore AvL que tenho aqui, porém em 1 parte eu preciso usar o "ref"(c#) existe algo que eu possa fazer para utilizar esse metodo em java? codigo:
public void insere(int valor) {
        int h = 0;
        raiz = insere(raiz, valor, h); // adicionar referencia ficaria ref h
    }

    private No insere(No p, int valor, int h) {//adicionar referencia ficaria ref int h
        if (p == null) {
            p = new No(valor);
            h = 1;
        } else if (valor < p.dado) { // esquerda
            p.esq = insere(p.esq, valor, h); // adicionar referencia ficaria ref h
            if (h == 1) {
                switch (p.bal) {
                    case 1:
                        p.bal = 0;
                        h = 0;
                        break;
                    case 0:
                        p.bal = -1;
                        break;
                    case -1:
                        System.out.println(h + "esquerda");
                        p = caso1(p);
                        h = 0;
                        break;
                }
            }
        } else if (valor > p.dado) { // direita
            p.dir = insere(p.dir, valor, h);// adicionar ref ficaria ref h
            if (h == 1) {
                switch (p.bal) {
                    case -1:
                        p.bal = 0;
                        h = 0;
                        break;
                    case 0:
                        p.bal = 1;
                        break;
                    case 1:
                        System.out.println(h + "direita");
                        p = caso2(p);
                        h = 0;
                        break;
                }
            }
        }
        return p;
    }

7 Respostas

renamed

Infelizmente não, bem-vindo à Java!

Mas em vez de int, vc pode passar Integer, ai se vc mudar o valor dentro do método já serve.

OBS: Estou falando isso pela teoria, não testei na prática pra ver se funciona. :smiley:

renamed

Acabei de testar e vi que o que eu disse acima, infelizmente, não funciona.

L

Infelizmente não, bem-vindo à Java!

Mas em vez de int, vc pode passar Integer, ai se vc mudar o valor dentro do método já serve.

OBS: Estou falando isso pela teoria, não testei na prática pra ver se funciona.

bom o que vale é a intenção ainda aguardo algum meio para o ref

Markus_Alemao

C, ponteiros e JNI(Caso queira alguma coisa com o Java). :smiley:

No Java a passagem de parametros é por valor sempre! (Ou não…só os idiotas tem certeza(professor Girafalez)).

ViniGodoy

Poderia apenas se o Integer não fosse imutável. Mas ele não possui sets.

O que ele tem que fazer é criar uma classe similar, mutável:

public class IntRef { public int valor; }

Use IntRef no lugar de int para o h. A classe em si é passada por referência. E então altere o valor dentro dela.

L

Poderia apenas se o Integer não fosse imutável. Mas ele não possui sets.

O que ele tem que fazer é criar uma classe similar, mutável:

public class IntRef { public int valor; }

Use IntRef no lugar de int para o h. A classe em si é passada por referência. E então altere o valor dentro dela.
Desculpa mais eu não entendi direito o que é para fazer pode me explicar melhor?

L

opa gente já resolvi o meu problema adicionando um getH() e 1 setH() agora a arvore esta incluindo novos nos perfeitamente vlw =D

Criado 18 de outubro de 2012
Ultima resposta 19 de out. de 2012
Respostas 7
Participantes 4