2013-03-25 241 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 
    } 

这是您正在寻找的基本格式。如果您有任何问题,请告诉我。

相关问题