簡體   English   中英

Java:如何防止使用條件語句將重復項添加到ArrayList中?

[英]Java: How do I prevent duplicates from being added to ArrayList using conditional statement?

我幾乎完成了一個程序,該程序可以收集用戶的輸入(關鍵字)並顯示它們。 我可以在這方面發揮作用,但是我還需要防止使用條件if語句將重復的關鍵字添加到列表中。 我知道我走在正確的道路上,但是無法將語法和使用布爾值將輸入的關鍵字與現有的ArrayList進行比較時陷入困境。

我知道有諸如Hash / Set之類的方法,但是我希望能夠在使用其他技術之前使用條件語句來實現。 我在搜索中找到的每個答案似乎都可以解釋Hash的用法。

謝謝!

更新:我已根據@Jacob的答案將代碼編輯為當前的代碼,這正是我想要的內容,因此感謝您的答復。 但是它仍然沒有刪除重復項,就好像它沒有檢查數組並直接跳轉到alreadyExists == false條件語句。 還是我無法正確比較這些值?

import java.util.*;

public class KeywordData {
    private ArrayList<Keyword> keywords = new ArrayList<Keyword>();

    public void create() {
        InputHelper inputHelper = new InputHelper();
        String prompt = "";
        boolean isTrue = true;

        while (isTrue) {
            prompt = inputHelper.getUserInput("Enter a string, otherwise type 'n' to exit:");
            if (!prompt.equals("n")) {
                Keyword keyword = new Keyword();
                keyword.setUserKeyword(prompt);

                boolean alreadyExists = false;
                for (Keyword keyword1 : keywords) {
                    if (keyword1.equals(keyword)) {
                        alreadyExists = true;
                    }
                }

                if (alreadyExists == false) {
                    keywords.add(keyword);
                } else {
                    System.out.println("You already added that word");
                }

            } else {
                break;
            }
        }
    }

    public void displayKeywords() {
        System.out.println();
        System.out.println("********** Your unique user keywords **********");
        for (Keyword keyword : keywords) {
            keyword.display();
        }
        System.out.println();
    }

}

我就是這樣做的,我展示了整個程序,因為我將一些自定義類更改為僅字符串,並且並不真正知道這些自定義類做了什么。

import java.util.*;
import java.io.Console;

public class KeywordData {
    private ArrayList<String> keywords = new ArrayList<String>();
    Scanner reader = new Scanner(System.in);

    public void create() {
        String prompt = "";
        boolean isTrue = true;

        while (isTrue) {
            System.out.println("Enter a string, otherwise type 'n' to exit:");
            prompt = reader.next();
            if (!prompt.equals("n")) {

                boolean alreadyExists = false;
                for (String keyword1 : keywords) {
                    if (keyword1.equals(prompt)) {
                        alreadyExists = true;
                    }
                }
                if (alreadyExists == false) {
                    keywords.add(prompt);
                }else {
                    System.out.println("You already added that word");
                }

            } else {
                break;
            }
        }
    }

    public void displayKeywords() {
        System.out.println();
        System.out.println("********** Your unique user keywords **********");
        for (String keyword : keywords) {
            System.out.println(keyword);
        }
    }

    public static void main(String[] args) {
        KeywordData kd = new KeywordData();
        kd.create();
        kd.displayKeywords();
    }

}

但是更簡單的檢查方法是這樣的

if (!prompt.equals("n")) {
    if (keywords.contains(prompt)) {
        System.out.println("You already added that word");
    }else {
        keywords.add(prompt);
    }               
} else {
    break;
}

暫無
暫無

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

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