ArrayList查找第一个和最后一个元素

GPG*_*GVM 12 java android

晚上好,

我有一个ArrayList(实例化为ld_data),我向前和向后迭代查看/向用户显示元素数据.在这个过程中,我需要知道我何时处于第一个元素和最后一个元素.检测我何时处于最后一个元素:

if((index + 1) <= ld_data.size())
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

这是因为size属性也是ArrayList的上限.然而,检测我何时处于第一个元素对我来说并不容易.我能够弄清楚的最好的是这看起来相当蹩脚......但它确实有效.

if((index - 1) >= (ld_data.size() - ld_data.size()))
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

在C#.NET世界中,我们有ArrayList.UpperBound或ArrayList.LowerBound在Java中有类似的东西吗?

JB

编辑:更多细节.因此,对于更多信息,我绑定到ListView.因此,当用户滚动到列表的第一个元素时,我想显示一个消息"在列表的开头",当它们到达结束时显示"列表结束".我知道有一个滚动条使这显而易见我只是想举例说明我在做什么.因此,此检查发生在"OnScroll"事件中.

Rak*_*esh 12

它始终建议使用IteratorsListIterator遍历列表.在修改列表数据(删除或插入元素)时,使用列表大小作为参考不会进行锻炼.

迭代器 - 允许调用者在一个方向上遍历列表,并在迭代期间使用明确定义的语义从底层集合中删除元素

您可以使用a ListIterator来遍历列表.A ListIterator允许程序员在任一方向遍历列表,在迭代期间修改列表,并获取迭代器在列表中的当前位置.您可以参考以下示例.

ArrayList<String> list = new ArrayList<String>();
    ListIterator<String> iterator = list.listIterator();
    while(iterator.hasNext()){
        System.out.println(iterator.next());
        ...
        ...
        System.out.println(iterator.previous());
        if(!iterator.hasPrevious()){
            System.out.println("at start of the list");
        }else if(!iterator.hasNext()){
            System.out.println("at end of the list");
        }

    }
Run Code Online (Sandbox Code Playgroud)

这只是一个显示a的用法的示例ListIterator,请分析您的要求并按要求实施.


Bhe*_*ung 9

List<YourData> list = new ArrayList<YourData>();

for(int index=0; index < list.size(); index++) {

    YourData currElement = list.get(index);

    if(index == 0) {
        //currElement is the first element
    }

    if(index == list.size() - 1) {
         //currElement is the last element
    }
}
Run Code Online (Sandbox Code Playgroud)