2016-10-18 2 views
0

Ich habe eine Klasse mit dem Namen Utilizador mit den folgenden Attributen erstellt:Wie füge ich ein Element zu einer Liste hinzu, innerhalb einer anderen Liste?

private String nome; 
private String email; 
private String cidadeAtual; 
private List<String> checkins = new ArrayList<String>(); 
private List<String> amigos = new ArrayList<String>(); 

In meiner Hauptklasse ich eine Liste von Utilizadores mit dem followinf Format haben:

Nickname: Daniel | Email: dd | Cidade atual: Maia | Checkins: [Maia] | Amigos: [] 
Nickname: Maria | Email: dd2 | Cidade atual: Porto | Checkins: [Porto] | Amigos: [] 

Was ich tun werde versuchen, Geben Sie einen Namen und dann den anderen ein und fügen Sie eine Freundschaft hinzu. Zum Beispiel:

Ich tippe Daniel, drücke Enter. Ich tippe Maria, drücke Enter. Die Liste amigos müssen nun jeweils anderen haben Namen wie folgt aus:

Nickname: Daniel | Email: dd | Cidade atual: Maia | Checkins: [Maia] | Amigos: [Maria] 
Nickname: Maria | Email: dd2 | Cidade atual: Porto | Checkins: [Porto] | Amigos: [Daniel] 

Aber die Methode, die ich entwickelt legt beide Namen innerhalb der Liste Amigos wie folgt aus:

Nickname: Daniel | Email: dd | Cidade atual: Maia | Checkins: [Maia] | Amigos: [Maria, Daniel] 
Nickname: Maria| Email: dd2 | Cidade atual: Porto | Checkins: [Porto] | Amigos: [Maria, Daniel] 

Hier ist die Methode:

public static void adicionarAmizade() { 
    Scanner cu = new Scanner(System.in); 
    System.out.println("Introduza o nome dos utilizadores!"); 
    System.out.println("\n1º:"); 
    String amigo1 = cu.next(); 
    System.out.println("\n2º:"); 
    String amigo2 = cu.next(); 

    for (Utilizador u : listaUtilizadores) { 
     if ((u.getNome()).equals(amigo1)) { 
      u.getAmigos().add(amigo2); 
      System.out.println("Adicionou"); 
      System.out.println(u.toString()); 
      break; 
     } 
    } 

    for (Utilizador u : listaUtilizadores) { 
     if ((u.getNome()).equals(amigo2)) { 
      u.getAmigos().add(amigo1); 
      System.out.println("Adicionou"); 
      System.out.println(u.toString()); 
      break; 
     } 
    } 
} 
+2

Ist es aus irgendeinem Grund möglich, dass beide 'Utilizador' des' amigos' Listen die gleiche List-Instanz sind? –

+2

Und ich weiß, es bedeutet mehr Arbeit an Ihrem Ende, aber im Allgemeinen: Dies ist eine englischsprachige Website. Die Chance, bessere Antworten zu erhalten, steigt, wenn Ihr Quellcode auch Englisch spricht. Für mich fehlt momentan der Kontext. Ich verstehe nicht, wie Ihre zwei oben genannten Listen und das größere Stück Quellcode zusammenkommen. – GhostCat

+0

Ich schlage vor, Sie lernen über die HashMap. https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html – Sedrick

Antwort

0

So etwas ist ein Anfang.

HashMap<String, String> Amigos = new HashMap<>(); 

//Create Friendship between Marian and Daniel. 
Amigos.put("Maria", "Daniel"); 

//Get Maria's Friend. 
System.out.println(Amigos.get("Maria")) 
+0

Diese Antwort ist nicht typsicher – Phileo99

+0

Vielen Dank! Sie könnten die Antwort bearbeitet haben, um sie zu verbessern. – Sedrick

0

Sie können auch einen Objektansatz verwenden.

Person Objekt

import java.util.ArrayList; 


public class Person { 
    String name; 
    ArrayList<String> friends = new ArrayList(); 

    Person(String name) 
    { 
     this.name = name; 
    } 

    String getName() 
    { 
     return this.name; 
    } 

    void addFriend(String friendName) 
    { 
     friends.add(friendName); 
    } 

    boolean isFriend(String friendName) 
    { 
     for(String friend : this.friends) 
     { 
      if(friend.equals(friendName)) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

    String getFriendInPosition(int position) 
    { 
     return this.friends.get(position); 
    } 

    int getFriendPosition(String friendName) 
    { 
     int i = 0; 
     for(String friend : this.friends) 
     { 
      if(friend.equals(friendName)) 
      { 
       return i; 
      } 
      i++; 
     } 
     return -1; 
    } 

    ArrayList<String> getAllFriends() 
    { 
     return this.friends; 
    } 
} 

Hauptklasse

public static void main(String[] args) {  

    Person maria = new Person("Maria"); 
    Person daniel = new Person("Daniel"); 

    maria.addFriend(daniel.getName()); 
    daniel.addFriend("Maria");//You could create this to add Person objects as friends 

    maria.addFriend("me");//You could create this to add Person objects as friends 
    maria.addFriend("you");//You could create this to add Person objects as friends 

    System.out.println(maria.getFriendInPosition(0)); 

    System.out.print("Are Maria and Daniel friends? "); 
    System.out.println(maria.isFriend(daniel.getName())); 

    for(String friend : maria.getAllFriends()) 
    { 
     System.out.println("Maria's friend: " + friend); 
    } 

    for(String friend : daniel.getAllFriends()) 
    { 
     System.out.println("Daniel's friend: " + friend); 
    } 
}  
Verwandte Themen