[英]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.