2015-05-10 3 views
0

Я хотел бы знать, как удалить случайно выбранный элемент из arraylist и добавить этот выбранный элемент в другой пустой arraylist.Получите случайный элемент из ArrayList, добавьте в другой ArrayList и удалите элемент из первого ArrayList Android

Additonal (необязательно): Я хотел бы также знать, как сравнивать элементы в ArrayList с другим ArrayList. Это боль в моих патушках.

+0

Удалены MISC комментаторской – Dan

ответ

2

также переместить элемент из одного ArrayList к другим вы можете сделать что-то вроде этого:

ArrayList<SomeClass> firstList; 
ArrayList<SomeClass> secondList; 
int randomlySelectedIndex; //initialize this to be random 
SomeClass element = firstList.get(randomlySelectedIndex); 
firstList.remove(randomlySelectedIndex); 
secondList.add(randomlySelectedIndex); 

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

int compare(SomeClass first, SomeClass second) { 
    //return 0, 1 or -1 depending on your criteria of how first relates to second 
} 

, а затем использовать метод сравнения при переборе с помощью списков

int result; 
for(int x = 0; x < firstList.size(); x++) { 
    for(int y = 0; y < secondList.size(); y++) { 
     result = compare(firstList.get(x), secondList.get(y)); 
     if(result == 0) { 
      //do stuff 
     } 
     else if(result < 0) { 
      //do stuff 
     } 
     else { 
      //do stuff 
     } 
    } 
} 

обратите внимание, что вы не должны добавлять или удалять элементы из любого из arraylists из двух циклов, если вы не знаете последствий этого.

+0

Спасибо за это, я могу работать с этим, я был настроен скептически по использованию вложенного цикла, но я предполагаю, что я не смогу избежать его – Tobidae

+0

Спасибо за это его хорошим решением –

1

Что-то вроде этого следует сделать трюк

List<T> list; 
List<T> emptyList; 
... 
Random rand = new Random(); 
int randomIndex = rand.getInt() % list.size(); 
T item = list.remove(randomIndex); 
emptyList.add(item); 

Как далеко сравнения двух списков, вы должны выяснить, что именно вы хотите сравнить. Кроме того, поскольку два вопроса довольно разные, вы можете задать его в отдельном сообщении.

+0

Спасибо за это, это имеет смысл, я смогу включить это в ответ Джека – Tobidae

1

Вы можете удалить объект из ArrayList, вызвав remove(int index), который возвращает объект, который был удален. Затем добавить этот объект в другой ArrayListadd() с:

SomeObject removedObject = firstList.remove(randomNum); 
secondList.add(removedObject); 

Примечание: убедитесь, что случайное число от 0 до размера вашего ArrayList.


Вы можете сравнить объекты одного и того же класса, реализовав Comparable интерфейс в этом классе. Подробнее: https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html

+0

Спасибо за это, я постараюсь избежать интерфейса Comparable, но спасибо – Tobidae