Добавление уникальных экземпляров объекта в ArrayList - PullRequest
1 голос
/ 27 февраля 2012

Действительно базовая проблема понимания ОО, с которой я сталкиваюсь, любая помощь очень ценится.

Я пытаюсь добавлять экземпляры «Вещь» в список arraylist каждый раз, когда я нажимаю кнопку, я не могу понять, как создавать уникальные экземпляры для добавления в список. Нажатие другой кнопки должно удалить самый последний объект из списка.

ArrayList myList = new ArrayList<Thing>();
if(input.isKeyPressed(Input.KEY_A)){
            Thing myThing = new Thing();
            myThing.setNumber(myList.size());
            myList.add(myThing);
        }

if(input.isKeyPressed(Input.KEY_R)){
            if(myList.size()>0){
                myList.remove(myList.size()-1);
            }
        }

Если я планирую делать много «вещей» и мне наплевать на то, как они называются (и при этом я не хочу отслеживать уникальные имена вещей-объектов). Как я могу создать уникальный объект «вещь» при каждом нажатии кнопки с минимальной болью.

UPDATE: Спасибо за комментарии, пожалуйста, позвольте мне попытаться сформулировать мой вопрос лучше ... Когда я создаю ArrayList, полный «Thing», каждый экземпляр которого называется «myThing», каждый экземпляр имеет одинаковые значения переменных экземпляра.

Если бы я хотел, чтобы у некоторых вещей было boolean isVisable = true, а у других boolean isVisable = false. Я застреваю, потому что каждый элемент списка имеет одинаковое имя.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Убедитесь, что Thing правильно реализует equals и hashCode, а затем сохраните экземпляры в коллекции Set (т.е. HashSet).С помощью реализаций hashCode () и equals () вы будете полностью зависеть от того, какие два экземпляра Thing одинаковы, и, следовательно, вы сможете применять уникальность любым нужным вам способом.

Теперь хитрость здесьв том, что реализация hashCode () и equals () не совсем тривиальна, но вам нужно знать, как это сделать, если вы планируете использовать Java.Так что прочитайте соответствующую главу Эффективной Явы (или еще лучше прочитайте всю книгу).

0 голосов
/ 27 февраля 2012

попробуйте это:

$ cat Thing.java
import java.util.*;
public class Thing{
        UUID id;
        Thing () {
                id = UUID.randomUUID();

        }

        public String toString(){
                return id.toString();

        }

        public static void main(String[] argv) {
                Thing t = new Thing();

                System.out.println(t);
        }
}


$ javac Thing.java  && java Thing 
08bb3702-84d3-4bc3-b8ab-bb52b90b8f78
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...