如何在列表迭代器中查找特定项

时间:2016-07-06 06:25:41

标签: java collections

我想寻找一个特定位置的列表迭代器来从那里移动一个。

我查了一下,如果收藏中有任何可用的东西,但我无法做到。

下面是我尝试过的实现工作正常,但我想知道有没有更好的方法来做到这一点。

class FileIterator implements ListIterator<String>{

        ListIterator<String> iterator = null;
        List<String> fileList;

        public FileIterator(List<String> fileList) {
            this.fileList=fileList;
            iterator=fileList.listIterator();
        }

        @Override
        public void add(String data) {
            iterator.add(data);         
        }

        @Override
        public boolean hasNext() {
            return iterator.hasNext();
        }

        @Override
        public boolean hasPrevious() {
            return iterator.hasPrevious();
        }

        @Override
        public String next() {
            return iterator.next();
        }

        @Override
        public int nextIndex() {
            return iterator.nextIndex();
        }

        @Override
        public String previous() {
            return iterator.previous();
        }

        @Override
        public int previousIndex() {
            return iterator.previousIndex();
        }

        @Override
        public void remove() {
            iterator.remove();
        }

        @Override
        public void set(String data) {
            iterator.set(data);
        }

        public boolean seek(String data){
            iterator=fileList.listIterator();
            while(iterator.hasNext()){
                if(iterator.next().equals(data))
                    return true;
            }
            //gives the first element by default
            iterator=fileList.listIterator();
            return false;
        }

    }

1 个答案:

答案 0 :(得分:3)

  • List.indexOf
  • List.listIterator(int index)

两者都可以结合所需的功能。

    public boolean seek(String data){
        int index = fileList.indexOf(data);
        iterator = fileList.listIterator(index == -1 ? 0 : index);
        return index != -1;
    }