晚上好,
我有一个ArrayList(实例化为ld_data),我向前和向后查询/显示元素数据.在这个过程中,我需要知道我在第一个元素和最后一个元素.检测当我在最后一个元素,我这样做:
if((index + 1) <= ld_data.size()) { .... }
这是因为size属性也是ArrayList的上限.但是,当我在第一个元素的时候检测到并不容易.最好的,我已经能够弄清楚,这似乎很跛脚….但它的作品.
if((index - 1) >= (ld_data.size() - ld_data.size())) { .... }
在C#.NET世界中,我们有ArrayList.UpperBound或者ArrayList.LowerBound在Java中有类似的东西?
JB
编辑:更多细节.所以对于更多的信息,我绑定到一个ListView.所以当用户滚动到列表的第一个元素时,我想显示一个msg“列表开始”,当它们到达结束时显示“结束列表”.我知道有一个滚动条,这使我很清楚,我只是想举一个例子,我在做什么.所以这个检查发生在“OnScroll”事件中.
解决方法
它总是建议使用迭代器或ListIterator来遍历列表.当您修改列表数据(删除或插入元素)时,使用列表大小作为参考不会锻炼.
迭代器 – 允许调用者在一个方向上遍历列表,并在迭代期间从底层集合中删除元素,并具有明确定义的语义
您可以使用ListIterator遍历列表. 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"); } }
这只是一个使用ListIterator的例子,请分析您的要求,并根据需要实现.