2016-10-18 2 views
0

У меня есть класс с именем Utilizador созданы со следующими атрибутами:Как добавить элемент в список, внутри другого списка?

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

В моем главном классе у меня есть список Utilizadores с форматом followinf:

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

То, что я пытаюсь сделать это имя типа, а затем другое и добавить дружбу. Например:

Я печатаю Даниил, нажмите enter. Я набираю Maria, нажимаю enter. В списке амигос теперь должны иметь друг друга назвать так:

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

Но метод, который я разработал путы оба названия внутри списка Amigos, как это:

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

Вот метод:

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

Можно ли по какой-то причине, что оба '' amigos' списки Utilizador' является тем же экземпляром списка? –

+2

И я знаю, что это означает больше работы на вашем конце, но в целом: это англоязычный сайт. Таким образом, шансы на получение лучших ответов увеличиваются, когда ваш исходный код также говорит по-английски. Для меня сейчас контекст отсутствует. Я не понимаю, как ваши два списка, упомянутые выше, и большая часть исходного кода собрались вместе. – GhostCat

+0

Я предлагаю вам узнать о HashMap. https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html – Sedrick

ответ

0

Что-то вроде этого - это начало.

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

Этот ответ не является безопасным по типу – Phileo99

+0

Спасибо! Вы могли бы отредактировать ответ, чтобы улучшить его. – Sedrick

0

Вы также можете воспользоваться объектным подходом.

Person Object

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; 
    } 
} 

Главный класс

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); 
    } 
}  
Смежные вопросы