-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 に答える