簡體   English   中英

如何在添加元素之前檢查隊列 ( LinkedList ) 中是否存在元素?

[英]How do I check if an element exists in a queue ( LinkedList ) before adding it?

如何在添加元素之前檢查隊列 (LinkedList) 中是否存在元素?

EX:地址 [id=1, url=https://www.google.com, size=2, queue=[request [requestId=1], request [requestId=2]]]

我無法添加 queue=[request [requestId=1], request [requestId=1]] 因為它們具有相同的 requestId。

你可以使用contains(Object o)方法

包含描述:

如果此列表包含指定元素,則返回 true。 更正式地說,當且僅當此列表包含至少一個元素 e 滿足 (o==null ? e==null : o.equals(e)) 時,才返回 true。 [...]

參數: o – 要測試其在此列表中的存在的元素

返回:如果此列表包含指定元素,則為 true

LinkedList實現了Collection接口,該接口定義了Collection#contains方法。

只需使用contains方法,您就可以輕松地使用從Collection派生的任何類來完成您所追求的事情。

有關詳細信息,請參閱LinkedList#contains上的文檔。

注意:它使用Objects#equals來確定該項目是否在Collection中。

如果你有相同的參考,我想你會很好。 如果您有代表相同數據的不同引用,那么您可能需要@Override對象上的equals方法。

下面的代碼可以幫助你...

package com.example.Solution;

import java.util.LinkedList;
import java.util.Queue;

public class Sol {
    public static void main(String[] args){
        Queue<Address> q1= new LinkedList<>();
        q1.add(new Address("abc",1,"url1"));
        Address a1=new Address("abc",1,"url");
        if(!q1.contains(a1))
            q1.add(a1);
        Address a2=new Address("abc",2,"url");
        if(!q1.contains(a2)){
            q1.add(a2);
        }
        Address a3=new Address("abc",1,"url2");
        if(!q1.contains(a3)){
            q1.add(a3);
        }
        System.out.println(q1.size());
    }
}
class Address {
    String name;
    int id;
    String url;

    public Address(String name, int id, String url) {
        this.name = name;
        this.id = id;
        this.url = url;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
    public boolean equals(Object o1){
        Address address=(Address) o1;
        return address.getId()==this.id;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM