2017-04-11 68 views
0
import java.util.ArrayList; 

public class list { 

protected ArrayList<String> a = new ArrayList<String>(); 

public boolean ad(String aa) 
{ 
    boolean t=true; 
    a.add(aa); 

    for(String value : courses) 
    { 
      if(a.contains(value)) 
      { 
      a=false; 
      } 
      else 
      { 
       a=true; 

      } 
    } 
    return a; 

} 

} 

如果arraylist課程包含重複元素,則該程序應該返回false。如果我們插入新元素,則返回true返回true。查找數組列表中的重複元素

爲上述代碼預期輸出是

true 

但它只能用於任何條件返回false。

+0

快速的問題 - 如果列表中包含重複這就是從你插入的元素不同應該怎麼回來了? –

+0

它應該在這種情況下返回true @ DavidWallace – user7799918

+1

因此,所有您需要做的就是使用'contains'來檢查列表是否包含您添加的元素,對嗎?無需循環!但它必須在你添加元素之前,否則你只會找到元素本身。 Jacob G.發佈了您正在尋找的解決方案。 –

回答

3

您可以簡單地利用ArrayList#contains以驗證是否元素已在List中存在。

public boolean addCourse(String course) { 
    if (courses.contains(course)) { 
     return false; 
    } 

    return courses.add(course); 
} 
+0

如果我們在arraylist中插入新元素,它應該返回true,但它不能與我們的代碼一起工作@jacob G – user7799918

+0

@ user7799918這正是這樣做的。 –

+0

感謝它的工作@ jacob G – user7799918

0

您正在列表中添加課程,然後迭代列表中的所有內容,因此它總是會給出您的答案。 ArrayList允許重複。

if(courses.contains(value)) 

將始終返回true,因爲您在arraylist之前添加了此課程。

建議:如果你想避免重複,你應該使用Set而不是列表。

0

簡單的方式,你可以這樣做:

對於執行else塊所以每次。刪除其他塊將它工作。

for(String value : courses) 
{ 
     if(courses.contains(value)) 
     { 
     a=false; 
     break; 
     } 

      a=true; 

} 
0

試試下面的代碼:關於你的要求

import java.util.ArrayList; 
public class list { 
    protected ArrayList<String> courses = new ArrayList<String>(); 
    protected String temp = ""; 

    public list(String str, String str2) { 

    } 

    public boolean addCourse(String course) { 
    boolean a = true; 
    if (courses.isEmpty()) { 
     courses.add(course); 
     temp = course; 
    } else { 
     if (temp.equalsIgnoreCase(course)) { 
      a = false; 
      temp = ""; 
     } else { 
      a = true; 
      courses.add(course); 
      temp = course; 
     } 
    } 
    return a; 
    } 
    public static void main(String[] args) { 
    list inst = new list("John", "WIU"); 
    System.out.println(inst.addCourse("CS560")); 
    System.out.println(inst.addCourse("CS500")); 
    } 
}