Iterator

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Iterator相关的知识,希望对你有一定的参考价值。

 

hasNext() 方法是检查序列中是否还有元素。

remove()方法是将迭代器返回的元素删除。

List list = new ArrayList();

list .add(“a”);

for(Iterator it = list .iterator(); iter.hasNext();)

{

Object obj = it.next();

If(“a”.equals(obj)

{  it.remove;  }

}

 

选猴王问题。、

100个猴子围城一圈,从第一个开始报数,当报到底14个人猴子时候,则第14个退出,依次类推,最后圈中剩下的一个就是猴王。

用链表 , num模拟报数,num等于14到时候节点删除,用一个计数器cnt来记录已经删除的节点,初始值为100,等于1时候即为猴王。

当把 100换成M ,14换成N,变成了约瑟夫环问题。

Public static void main(string []args)

{

    LinkedList lucky = new LinkedList();

   Int number,cnt;

 For( number = 1;number<=100;++number)

 Lucky.addLast(number);

Cnt = 100;

Number = 0;

Iterator it = lucky.iterator();

//循环删除退出的猴子,知道只剩下一个

While(cnt>1)

{

If(it .hasNext())

{

It.next(); //往后面数

++number;  //计数器家1;

}

else{           //迭代器已经到达末尾,重新将它置回到链接表头部。

it = lucky.iterator();

}

//删除应该退出圈得猴子

If(number==14)

{

Number =0;

It.remove();

--cnt;

}

}

System.out.println(“猴王为:”+lucky.element());

}

以上是关于Iterator的主要内容,如果未能解决你的问题,请参考以下文章

Java 集合类

面经:去哪儿一面

list remove元素

2019-2-22

遍历的多实战写法

设计模式之迭代器模式