删除ArrayList Java中的相同值

时间:2016-12-07 00:13:40

标签: java arraylist

我有两个arraylists,我想在这些列表之间删除相同的值,但只有一次出现。例如:

ArrayList<Integer> a = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));
ArrayList<Integer> b = new ArrayList<>(Arrays.asList(1,2,3,1,2,3));

使用这些函数,函数unique(a,b)将返回:

[[4,5,6],[1,2,3]]

3 个答案:

答案 0 :(得分:2)

假设您要返回ArrayLists的ArrayList,可以使用以下方法实现此目的:

private static ArrayList<ArrayList<Integer>> unique(ArrayList<Integer> a, ArrayList<Integer> b) {
    ArrayList<ArrayList<Integer>> unique = new ArrayList<>();

    unique.add(new ArrayList<>());
    unique.add(new ArrayList<>());


    for (Integer i: a) {
        if (!b.contains(i) && !unique.get(0).contains(i)) {
            unique.get(0).add(i);
        }
    }

    for (Integer i: b) {
        if (a.contains(i) && !unique.get(1).contains(i)) {
            unique.get(1).add(i);
        }
    }

    return unique;
}

答案 1 :(得分:0)

如果你只需要知道一堆列表中的独特元素:

public static <T> ArrayList getUnique(List<T> ... lists){
  Set<T> unique = new HashSet<T>();
  for (List<T> eachList : lists){
    unique.addAll(eachList);
  }
  return new ArrayList(unique);
}

你可以这样称呼它:

List<Integer> unique = getUnique(a,b);

答案 2 :(得分:0)

@lmiguelvargasf - 我接受了你的功能并对其进行了一些修改,因为事实证明你的版本只有在数字已经不同的情况下才有效。这是新功能:

class InitialViewController: UIViewController {

    let url = "https://api.sis.kemoke.net/auth/login"
    var parameters = ["email": "example@example.com", "password": "examplePassword"]

    // Parameters textfields
    @IBOutlet weak var email: UITextField!
    @IBOutlet weak var password: UITextField!

    // A method for the login button
    @IBAction func loginButton(_ sender: UIButton) {
        parameters["email"] = email.text ?? ""
        parameters["password"] = password.text ?? ""
        Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: nil).responseJSON {
            (response) in
            print(response.result.value!)
        }
    }

}