首页 > 编程知识 正文

javaarraylist转数组,java中int是什么意思

时间:2023-05-04 11:14:25 阅读:165168 作者:2042

1 .概述本文查看来自java.util.concurrent的CopyOnWriteArrayList包。

这是一个多线程程序,非常有用的软件包- 当我们想要以线程安全的方式迭代列表而没有显式同步时。

2.copyonwritearraylistapicopyonwritearraylist的设计无需使用有趣的技术进行线程安全和同步。 使用add (或remove )等修改方法时,将CopyOnWriteArrayList的所有内容复制到新的内部副本中。

由于这个简单的事实,即使进行了同时修改,也可以安全地重复列表。

在CopyOnWriteArrayList中调用iterator ()方法时,将返回由CopyOnWriteArrayList内容的不可变快照备份的iterator。

其内容是创建迭代器时ArrayList中数据的准确副本。 在此期间,即使其他线程从列表中添加或删除了元素,更改也会生成新的数据副本,并用于搜索列表中的其他数据。

这种数据结构的特性特别适合我们重复而不是修改它的情况。 如果将元素添加到我们的场景是一种常见操作,则“CopyOnWriteArrayList”不是一个好选择。 因为添加副本会导致低于标准的性能。

3 .假设您在插入时重复CopyOnWriteArrayList,并创建一个包含整数的CopyOnWriteArrayList实例。

copyonwritearraylistintegernumbers=newcopyonwritearraylist (new integer [ ] { 1,3,5,8 } ); 接下来,我创建了一个迭代器实例,因为我想重复数组。

iteratorintegeriterator=numbers.iterator (; 创建迭代器后,将新元素添加到数字列表中。

Numbers.add(10 ); 创建CopyOnWriteArrayList迭代器时,请注意在调用iterator () ()时将获取列表中数据的不可变快照。

因此,在重复那个的时候,我们不会在重复中看到数字10 :

listintegerresult=new linked list (; iterator.foreach remaining (结果:3360 add; assertthat(result ).containsonly ) 1、3、5、8 ); 使用新创建的迭代器进行的迭代将返回添加的10个数字。

iteratorintegeriterator2=numbers.iterator (; listintegerresult2=new linked list (; 迭代器2.foreach remaining (result 23360: add ); assertthat(result2).containsonly ) 1、3、5、8、10 ); 4 .如果不允许迭代,删除此CopyOnWriteArrayList就是在创建后允许安全迭代,即使基本列表可能是限定元素。

由于复制机制的原因,无法对返回的迭代器执行remove ()操作。 结果,发生了UnsupportedOperationException。

@ test (expected=unsupportedoperationexception.class ) publicvoidwheniterateoveritandtrytoremovelement _ thenshouldthou thenshould mbers=newcopyonwritearraylist (new integer () } { 1,3,5,8 }; iteratorintegeriterator=numbers.iterator (; wile(iterator.hasnext () ) { iterator.remove; }5.结论在本快速教程中,您查看了java.util.concurrent包的CopyOnWriteArrayList实现。

我们看到了这个列表的有趣含义,以及它如何在线程安全中迭代,其他线程可以继续插入和删除元素。

关注公众号:「 Java知己”,每天更新Java知识哦。 我期待着你的到来。

发送“1024”,免费领取30本经典编程书。 发送“Group”,与10万程序员一起进步。 发送“JavaEE实战”并接收《JavaEE实战》系列视频教程。 发送“玩转算法”并接收《玩转算法》系列视频教程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。