我有两个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]]
答案 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!)
}
}
}