-1

不确定标题是否有意义。但我目前正试图获取列表中最后一次出现的对象。假设对象包含年龄(整数)和名称(字符串)。我正在尝试获取列表中年龄“18”的最后一次出现,并检索名称。我该怎么办?

我正在使用的当前代码块(对不起,不得不把它淡化很多):

private List<Callable<Void>> createTasks(ArrayList<NamesAndAges> namesAndAges) {
        List<Callable<Void>> tasks = new ArrayList<Callable<Void>>();

        int endOfIndex = 0, beginningOfIndex = 0;

        for (NamesAndAges nameAndAge : namesAndAges) 
        {
            if (endOfIndex >= minSize && endOfIndex == namesAndAges.lastIndexOf(???))
            {
                tasks.add(new addIntoDB(namesAndAges.subList(beginningOfIndex, endOfIndex)));
                beginningofIndex = endOfIndex+1;
            }
            endOfIndex++;
        }
        return tasks;
    }

我基本上被困在哪里???在代码中。我想我可以使用 lastIndexOf() 来解决它。

4

2 回答 2

0

基于这个答案,如果你有一个列表,你可以在集合的末尾开始你的迭代器并向后迭代:

// Substitute appropriate type.
ArrayList<MyItem> a = new ArrayList<MyItem>();

// add your elements...

// Generate an iterator. Start after the last element.
ListIterator li = a.listIterator(a.size());

// Iterate in reverse.
MyItem mi = null;
while(li.hasPrevious()) {
    mi = li.previous();
    if(mi.getAge().equals("18")) { // obviously, your test will likely differ...
        break;
    }
}
于 2017-01-10T20:47:29.017 回答
0

尝试这样的事情。

    ArrayList<Integer> a = new ArrayList<Integer>();

    // add your elements...
    for(int i = 1; i < 19; i++)
    {
        a.add(i);
    }


    while(a.size() > 0) 
    {            
        System.out.println("last item: " + a.get(a.size() - 1));//print last item
        a.remove(a.size() - 1);//remove last item
    }
于 2017-01-10T22:08:14.480 回答