2017-07-12 1 views
0

Je dois obtenir une valeur d'une liste de tableau. Les objets de la liste stockent des valeurs dans les variables (coordonnées x et y).Comment puis-je obtenir une valeur à partir d'une position spécifiée dans une liste de tableau (traitement)?

J'ai essayé d'utiliser la fonction get() mais elle ne renvoie qu'une chaîne comme celle-ci: linkTrackerTest $ Object @ 20e76e47.

En outre j'ai essayé pense comme objects.get (0 (x)) mais rien n'a fonctionné encore.

Quelqu'un peut-il m'aider avec ceci?

:-) Merci à l'avance

+2

Avez-vous essayé 'objects.get (0) .x'? – MaxPower

+1

Copie possible de [Comment imprimer mon objet Java sans obtenir "SomeType @ 2f92e0f4"?] (Https://stackoverflow.com/questions/29140402/how-do-i-print-my-java-object-without- get-sometype2f92e0f4) –

+0

Pouvez-vous s'il vous plaît poster un [mcve] qui montre le comportement en aussi peu de lignes que possible? Notez que ceci ne devrait pas être votre croquis entier. Ce devrait être un petit exemple que nous pouvons copier et coller pour voir le problème sur nos propres ordinateurs. –

Répondre

1

Vous obtenez cette chaîne étrange car elle renvoie l'adresse de mémoire des données au lieu de la donnée elle-même car Java appelle implicitement un toString().

Essayez:

yourObject x = list.get(i);

ou

int x = list.get(i).xValue;/int y = list.get(i).yValue;

ou tout simplement remplacer le toString() complètement en écrivant votre propre

+2

Ce n'est pas l'adresse mémoire de l'objet.Veuillez formater le code correctement. –

2

Le comportement que vous obtenez est tout à fait normal.

Depuis que je suppose que vous essayez d'imprimer l'objet retourné par get, et puisque vous n'avez pas fourni un Override pour la méthode de toString()Object, le meilleur Java peut faire est d'imprimer la soi-disant identité hashcode - "un peu de l'adresse mémoire" de celui-ci.

Essayez d'ajouter ce qui suit comme un membre de votre classe:

  @Override 
     public String toString() { 
      return x+" "+y; 
     } 

De cette façon, vous essayez d'imprimer votre classe, Java appellera automatiquement le fourni toString()

  • Le problème ici est pas dans la façon dont vous accédez à un élément d'un ArrayList, la méthode get suffit pour cela.
0

Je ne sais pas si c'est ce que vous demandez, mais si vous avez une liste d'objets vous pouvez obtenir Les valeurs que vous recherchez avec un getter dans votre classe Object

public class Obj { 

    private int x; 
    private int y; 

    // constructor in which x, y values are given 
    public Obj(int x_val, int y_val) { 
      this.x = x_val; 
      this.y = y_val; 
    } 

    // getter 
    public int get_x() { 
      return this.x; 
    } 

    public int get_y() { 
      return this.y; 
    } 



public static void main(String[] args) { 

     List<Obj> Obj_Lst = new ArrayList<Obj>(); 

     // adding objects to list 
     Obj_Lst.add(new Obj(1,6)); 
     Obj_Lst.add(new Obj(2,5)); 
     Obj_Lst.add(new Obj(3,4)); 

     // getting values from object 
     System.out.println(Obj_Lst.get(0).get_x()); 

} 

} 

Sortie