0
点赞
收藏
分享

微信扫一扫

java阻塞队列重复怎么不重复元素

要在Java中使用阻塞队列存储不重复的元素,可以使用Set结合BlockingQueue实现。首先,创建一个Set来存储已经添加到队列中的元素,然后在添加元素到队列之前检查该元素是否已经存在于Set中。如果不存在,则将元素添加到队列和Set中;如果已经存在,则跳过该元素。

以下是一个简单的示例:

import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class UniqueBlockingQueue<T> {
    private final BlockingQueue<T> queue = new LinkedBlockingQueue<>();
    private final Set<T> set = new HashSet<>();

    public void add(T element) throws InterruptedException {
        synchronized (this) {
            if (!set.contains(element)) {
                queue.put(element);
                set.add(element);
            }
        }
    }

    public T take() throws InterruptedException {
        T element = queue.take();
        set.remove(element);
        return element;
    }
}

在这个示例中,我们创建了一个名为UniqueBlockingQueue的类,它使用LinkedBlockingQueue作为底层的阻塞队列,并使用HashSet来存储已经添加到队列中的元素。add方法在添加元素之前检查元素是否已经存在于Set中,如果不存在,则将元素添加到队列和Set中;take方法从队列中取出元素并将其从Set中移除。

举报

相关推荐

0 条评论