Jump to content

Recommended Posts

Posted

Viva!

Tenho uma class para um User simples:

public class User{

   private String nome;
   private String bi;
   private int idade;
   private String morada;
   private String email;
   private int nfilhos;

  // gets , sets, clone, tostring e equals...

}

E depois tenho uma Users:

public class Users{

   ArrayList<User> users;
   ArrayList<???> usersBI; // Duvida aqui....

   public Users(){
          users = new ArrayList<User>();
          usersBI = new ArrayList<???>();
   }

   public addUser(User u){
          users.add(u.clone());
          // Duvida aqui........
   }

}

O objectivo é ter um ArrayList com a informação dos users (que vai ser depois ordenado por nome) e outro que como me sugeriram um ArrayLists de apontadores (de que tipo é que será a informação?) que será posteriormente para ordenar por BI e também para fazer a validação de BI já existente e que não contenha duplicação de informação visto o user já estar na users, daí o apontador para o respectivo user no ArrayList users...

PS.: A estrutura de dados tem mesmo de ser ArrayList...

Cumprimentos

Posted

Em Java não há ponteiros/apontadores, excepto os tipos primitivos tudo são referências (que não são bem ponteiros mas podem ser considerados como tal).

Essa segunda estrutura é também de objectos do tipo User, aliás, colocas o mesmo objecto (a mesma instância) nas duas listas e resolves o teu problema.

public class Users{

   ArrayList<User> users;
   ArrayList<User> usersBI;

   public Users(){
          users = new ArrayList<User>();
          usersBI = new ArrayList<User>();
   }

   public addUser(User u){
          //porquê o clone? A não ser que seja para fins académicos....
          User clone = u.clone();
          users.add(clone);
          usersBI.add(clone);
   }
}

Tirando a duplicação que tu próprio fazes através do método clone() não há duplicação de dados, as duas listas têm os mesmos objectos pode ser ordenadas de forma independente.

Posted

Sim, é para um projecto. Faz sentido, se inserir sem o clone nos 2 arrays ficam a partilhar o mesmo user...

O que me está a a confundir é o facto de inserir um user em users e o mesmo na usersBI, após fazer o sort de ambos continuam a partilhar os mesmos users?

Muito obrigado pela ajuda!

Posted

O que te está a confundir é não perceberes que lidas sempre com referências 🙂 . Estás apenas a colocar uma referência nas duas listas e sim, internamente a ordem irá ser diferente (se tiveres comparadores ou usares métodos de ordenação) já que estão a ser ordenadas referências para objectos.

Não sei se tens mais experiência com ponteiros (de C), se assim for imagina que estás a colocar ponteiros nas listas e que estás a ordenar esses ponteiros.

Posted

Os arrayList users e usersBI é para poderes ter ordenações diferentes? Por nome e por bi?

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.