晚上好,
我有一个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
它始终建议使用Iterators或ListIterator遍历列表.在修改列表数据(删除或插入元素)时,使用列表大小作为参考不会进行锻炼.
迭代器 - 允许调用者在一个方向上遍历列表,并在迭代期间使用明确定义的语义从底层集合中删除元素
您可以使用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,请分析您的要求并按要求实施.
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)