KiNgPiTo Posted May 7, 2012 at 09:02 PM Report #453642 Posted May 7, 2012 at 09:02 PM 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
Knitter Posted May 7, 2012 at 09:16 PM Report #453646 Posted May 7, 2012 at 09:16 PM 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.
KiNgPiTo Posted May 7, 2012 at 09:38 PM Author Report #453650 Posted May 7, 2012 at 09:38 PM 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!
Knitter Posted May 7, 2012 at 09:45 PM Report #453655 Posted May 7, 2012 at 09:45 PM 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.
joelbrito Posted May 7, 2012 at 09:57 PM Report #453660 Posted May 7, 2012 at 09:57 PM 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
KiNgPiTo Posted May 7, 2012 at 10:19 PM Author Report #453669 Posted May 7, 2012 at 10:19 PM Knitter, sim fazendo uma analogia com C fiquei a perceber melhor. Muito Obrigado! joelbrito, sim o objectivo maioritário é esse...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now