gpt4 book ai didi

java - 需要同时迭代和修改 arraylist (或类似的)

转载 作者:行者123 更新时间:2023-12-02 12:58:57 25 4
gpt4 key购买 nike

我需要迭代一个正在其他地方同时修改的列表,我读到这是不可能的 ArrayList..

有人可以告诉我可以使用什么吗?或者这是否可能?我认为进行 arraycopy 之类的操作会降低我的需求,但如果没有其他选择,我会研究一下。无论如何,希望得到另一个提示:)

代码

Iterator<blabla> haha = bytes.iterator();
while(haha.hasNext()) {
blabla aStorage = haha.next();
TimeUnit.MILLISECONDS.sleep(120);
}

以及其他地方

bytes.add(aStorage);

最佳答案

我会将我的评论移至答案中。

looking at your code it looks like you want a Queue, not a list. Maybe ConcurrentLinkedQueue helps?

这是队列如何工作的一个非常简单的示例:

private final static Queue<String> myQueue = new ConcurrentLinkedQueue<>();

public static void main(String[] args) {

new Thread(new Adder()).start();
new Thread(new Consumer()).start();
}

private static class Adder implements Runnable {

@Override
public void run() {
while (true) {
myQueue.add(String.valueOf(System.currentTimeMillis()));
try {
TimeUnit.MILLISECONDS.sleep(1_000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

private static class Consumer implements Runnable {

@Override
public void run() {

while (true) {
for (String value = myQueue.poll(); value != null; value = myQueue.poll()) {
System.out.println(value);
}
}
}
}

看看The Javadoc for the Queue Interface也许看看 Official Collections Trail这是一个非常好的来源,可以帮助您找到适合您需要的抽象数据类型。了解更多集合而不是列表总是好的。

我经常使用的一些集合:

  • 列表(ArrayList、LinkedList)
  • 集合(HashSet、TreeSet)
  • 映射(HashMap)
  • 队列(LinkedList、ConcurrentLinkedQueue)

关于java - 需要同时迭代和修改 arraylist (或类似的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44342256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com