2013-03-25 343 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

是的,這是可能的。你有什麼嘗試? – 2013-03-25 16:25:13

+3

定義了「SetOfStuff」的位置? – Howard 2013-03-25 16:25:38

+0

它是項目中定義的一個POJO。每個數組的第一個元素是我想要抓取的ID。我試過返回example.get(0),但只讓我[[a,b,c]](給出我上面的例子) – envinyater 2013-03-25 16:32:52

回答

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 lambda。

+0

是的,這工作得很好。謝謝 :) – envinyater 2013-03-25 20:02:44

1

從本質上講,你是在一個列表中定義了一組(我猜SetOfStuff是某種集)用這一行:

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

你需要先得到一個el使用List的get()方法從example中得到第一個元素,然後從列表的get()返回結果的第一個元素。要訪問List中的每個元素(所以每個Set),都需要某種循環。下面是關於如何做到這一點的半僞代碼。這取決於你如何訪問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 
    } 

這是您正在尋找的基本格式。如果您有任何問題,請告訴我。

相關問題