在数组列表中找到重复元素

时间:2017-04-11 02:13:02

标签: java arraylist

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

但它只对任何条件返回false。

5 个答案:

答案 0 :(得分:4)

您只需使用ArrayList#contains来验证List中是否已存在某个元素。

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

    return courses.add(course);
}

答案 1 :(得分:1)

您正在列表中添加课程,然后迭代列表,因此它总是给您真实的。 ArrayList允许重复。

 if(courses.contains(value))

将始终返回true,因为您在arraylist中添加了此前的课程。

建议:如果你想避免重复,你应该使用Set than list。

答案 2 :(得分:1)

如何使用HashSet来保存课程,而不是使用ArrayList?

http://beginnersbook.com/2013/12/hashset-class-in-java-with-example/

答案 3 :(得分:1)

您可以采用简单的方法:

For每次执行else阻止所以。删除其他阻止它将起作用。

var connectionString = $"mongodb://{username}:{password}@{host}/{database}";
var mongoclient = new MongoClient(connectionString);

答案 4 :(得分:1)

尝试以下代码:

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"));
  }
}