2013-03-25 6 views
0

Я не уверен, как это сделать,Возврат первого элемента каждого элемента в списке?

Скажем, у меня есть это в,

List<SetOfStuff> example = [[a,b,c],[1,2,3],[x,y,z]]; 
return example; 

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

return [[a],[1],[x]];

или даже лучше

return [a,1,x]; 

Спасибо за помощь

+0

да это возможен. что вы пробовали? –

+3

Где находится 'SetOfStuff'? – Howard

+0

Его POJO, определенный в проекте. Первый элемент каждого массива - это идентификатор, который я хочу захватить. Я попытался возвратить example.get (0), но это только меня достало [[a, b, c]] (учитывая мой пример выше) – envinyater

ответ

1

Если у SetOfStuff есть структура, и вы заявляете, что это POJO, тогда дайте ему метод getId(), если он еще не имеет его. Затем начать с

public List<SetOfStuff.ID> extractIds(List<SetOfStuff> stuffList) { 
    List<SetOfStuff.ID> ids = new ArrayList<>() // Java 7. 
    for((SetOfStuff stuff: stuffList) { 
     ids.add(stuff.getId()); 
    } 
    return ids; 
} 

Используйте фактический тип SetOfStuff.ID при необходимости. Рассмотрим библиотеку функционального программирования с методом преобразования и перейдите на Java 8 lambdas, когда сможете.

+0

Yup, это сработало отлично. Спасибо :) – envinyater

1

По сути, вы определяете набор в списке (я предполагаю, что SetOfStuff является своего рода Set) с этой линией:

List<SetOfStuff> example = [[a,b,c],[1,2,3],[x,y,z]]; 

Вам необходимо сначала получить el ement от example, используя метод get() List, а затем получите первый элемент, результат, который вы возвращаете из списка get(). Чтобы получить доступ к каждому элементу внутри списка (так что каждый набор), вам понадобится какой-то цикл. Ниже приведено полу-псевдокод о том, как это сделать. Это зависит от того, как вы можете получить доступ к элементам внутри SetOfStuff.

List<Object> firstElements = new List<Object>(); // normally, using Object is not a great idea, but I don't know much about the data in example. Change this accordingly 
    for (int i = 0; i < example.size(); i++){ // this iterates over every element in the list 
     firstElements.add(example.get(i).getFromSet(0)); // in this, I assume that getFromSet(0) gets the first element from the SetOfStuff object 
    } 

Это основной формат того, что вы ищете. Дайте знать, если у вас появятся вопросы.

Смежные вопросы