晚上好,
我有一个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"); } }
原文地址:https://www.jb51.cc/java/121994.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。