2017-04-11 55 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")); 
    } 
}