lufarce
2015-11-22 15:26
问一下,indexOf(str)能查找到第一个str,那么如果一个List里有好几个同样的str,我应该怎么查找第二个、第三个……乃至于第五个?这种既不是第一个也不是最后一个的需求,应该怎么样满足?
/** * 查找第n个课程名出现的index * * @param n */ public int search(int n) { Course course = new Course(); course.name = console.next(); int index = -1; if (ListToSelect.contains(course)) { index = ListToSelect.indexOf(course); while (n > 1) { index = ListToSelect.subList(ListToSelect.indexOf(course) + 1, ListToSelect.size()).indexOf(course); n--; } } return index; }
一般先获取第一次出现的index,然后调用List的subList(fromIndex,toIndex)方法取得他的子序列,然后子序列再调用indexOf方法。可以用一个循环,设置一个变量记录查找的个数,达到个数的时候终止循环。
你可以重新写一下indexof,比如在其中增加一个计数器,每次索引到值定对象就加一,直到计数值达到你想要找的个数,再将其索引位置值返回。
一个一个找,找到就记录位置,计数加一,最后根据计数返回要找的位置
java中提供给你方法了 你可以拿来直接用 如果没提供 你就应该自己去定义一个这样的方法了。。。
加油 !方法很多,给你个思路,直接遍历集合 然后逐个判断如果元素相等,那么记录这个元素的位置,剩下的你还不会,那最好还是在吧基础复习一下。。。
Java入门第三季
409792 学习 · 4340 问题
相似问题
回答 1
回答 2