import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.HashSet;
public final class Main {
public static void main
(final String[] argv
) { null, "abc@aaa.com", "ENG", "775778435", 1
null, "abc@aaa.com", "ENG", "775778435", 1
});
final Set<User> users = new HashSet<User>();
for (final Object[] result
: raw
) { }
for (final User user : users) {
System.
out.
println("non-duplicate: " + user.
email()); }
}
}
final class User {
private int status;
this.firstName = fName;
this.email = userId;
this.language = lang;
this.productCode = productCode;
this.status = status;
}
return firstName;
}
public void setFirstName
(String firstName
) { this.firstName = firstName;
}
return email;
}
public void setEmail
(String email
) { this.email = email;
}
return language;
}
public void setLanguage
(String language
) { this.language = language;
}
return productCode;
}
public void setProductCode
(String productCode
) { this.productCode = productCode;
}
public int status() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
@Override
public int hashCode() {
return (firstName == null ? 0 : firstName.hashCode())
+ (email == null ? 0 : email.hashCode())
+ (language == null ? 0 : language.hashCode())
+ (productCode == null ? 0 : productCode.hashCode())
+ status;
}
@Override
public boolean equals
(Object obj
) { if (obj instanceof User) {
User temp = (User) obj;
return (firstName == temp.firstName || firstName != null && firstName.equalsIgnoreCase(temp.firstName))
&& email != null && temp.email != null && email.equalsIgnoreCase(temp.email)
&& language != null && temp.language != null && language.equalsIgnoreCase(temp.language)
&& productCode != null && temp.productCode != null && productCode.equalsIgnoreCase(temp.productCode)
&& status == temp.status;
} else {
return false;
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IGphdmEudXRpbC5TZXQ7CmltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKCnB1YmxpYyBmaW5hbCBjbGFzcyBNYWluIHsKCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oZmluYWwgU3RyaW5nW10gYXJndikgewogICAgZmluYWwgTGlzdDxPYmplY3RbXT4gcmF3ID0gQXJyYXlzLmFzTGlzdChuZXcgT2JqZWN0W10gewogICAgICBudWxsLCAiYWJjQGFhYS5jb20iLCAiRU5HIiwgIjc3NTc3ODQzNSIsIDEKICAgIH0sIG5ldyBPYmplY3RbXSB7CiAgICAgIG51bGwsICJhYmNAYWFhLmNvbSIsICJFTkciLCAiNzc1Nzc4NDM1IiwgMQogICAgfSk7CgogICAgZmluYWwgU2V0PFVzZXI+IHVzZXJzID0gbmV3IEhhc2hTZXQ8VXNlcj4oKTsKICAgIGZvciAoZmluYWwgT2JqZWN0W10gcmVzdWx0IDogcmF3KSB7CiAgICAgIHVzZXJzLmFkZChuZXcgVXNlcigoU3RyaW5nKSByZXN1bHRbMF0sIChTdHJpbmcpIHJlc3VsdFsxXSwKICAgICAgICAgIChTdHJpbmcpIHJlc3VsdFsyXSwgKFN0cmluZykgcmVzdWx0WzNdLCAoSW50ZWdlcikgcmVzdWx0WzRdKSk7CiAgICB9CgogICAgZm9yIChmaW5hbCBVc2VyIHVzZXIgOiB1c2VycykgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm5vbi1kdXBsaWNhdGU6ICIgKyB1c2VyLmVtYWlsKCkpOwogICAgfQogIH0KfQoKZmluYWwgY2xhc3MgVXNlciB7CgogIHByaXZhdGUgU3RyaW5nIGZpcnN0TmFtZTsKICBwcml2YXRlIFN0cmluZyBlbWFpbDsKICBwcml2YXRlIFN0cmluZyBsYW5ndWFnZTsKICBwcml2YXRlIFN0cmluZyBwcm9kdWN0Q29kZTsKICBwcml2YXRlIGludCBzdGF0dXM7CgogIHB1YmxpYyBVc2VyKFN0cmluZyBmTmFtZSwgU3RyaW5nIHVzZXJJZCwgU3RyaW5nIGxhbmcsIFN0cmluZyBwcm9kdWN0Q29kZSwgaW50IHN0YXR1cykgewogICAgdGhpcy5maXJzdE5hbWUgPSBmTmFtZTsKICAgIHRoaXMuZW1haWwgPSB1c2VySWQ7CiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZzsKICAgIHRoaXMucHJvZHVjdENvZGUgPSBwcm9kdWN0Q29kZTsKICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwogIH0gICAKCiAgcHVibGljIFN0cmluZyBmaXJzdE5hbWUoKSB7CiAgICByZXR1cm4gZmlyc3ROYW1lOwogIH0KCiAgcHVibGljIHZvaWQgc2V0Rmlyc3ROYW1lKFN0cmluZyBmaXJzdE5hbWUpIHsKICAgIHRoaXMuZmlyc3ROYW1lID0gZmlyc3ROYW1lOwogIH0KCiAgcHVibGljIFN0cmluZyBlbWFpbCgpIHsKICAgIHJldHVybiBlbWFpbDsKICB9CgogIHB1YmxpYyB2b2lkIHNldEVtYWlsKFN0cmluZyBlbWFpbCkgewogICAgdGhpcy5lbWFpbCA9IGVtYWlsOwogIH0KCiAgcHVibGljIFN0cmluZyBsYW5ndWFnZSgpIHsKICAgIHJldHVybiBsYW5ndWFnZTsKICB9CgogIHB1YmxpYyB2b2lkIHNldExhbmd1YWdlKFN0cmluZyBsYW5ndWFnZSkgewogICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlOwogIH0KCiAgcHVibGljIFN0cmluZyBwcm9kdWN0Q29kZSgpIHsKICAgIHJldHVybiBwcm9kdWN0Q29kZTsKICB9CgogIHB1YmxpYyB2b2lkIHNldFByb2R1Y3RDb2RlKFN0cmluZyBwcm9kdWN0Q29kZSkgewogICAgdGhpcy5wcm9kdWN0Q29kZSA9IHByb2R1Y3RDb2RlOwogIH0KCiAgcHVibGljIGludCBzdGF0dXMoKSB7CiAgICByZXR1cm4gc3RhdHVzOwogIH0KCiAgcHVibGljIHZvaWQgc2V0U3RhdHVzKGludCBzdGF0dXMpIHsKICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwogIH0KCiAgQE92ZXJyaWRlCiAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgIHJldHVybiAoZmlyc3ROYW1lID09IG51bGwgPyAwIDogZmlyc3ROYW1lLmhhc2hDb2RlKCkpCiAgICAgICAgKyAoZW1haWwgPT0gbnVsbCA/IDAgOiBlbWFpbC5oYXNoQ29kZSgpKQogICAgICAgICsgKGxhbmd1YWdlID09IG51bGwgPyAwIDogbGFuZ3VhZ2UuaGFzaENvZGUoKSkKICAgICAgICArIChwcm9kdWN0Q29kZSA9PSBudWxsID8gMCA6IHByb2R1Y3RDb2RlLmhhc2hDb2RlKCkpCiAgICAgICAgKyBzdGF0dXM7CiAgfQoKICBAT3ZlcnJpZGUKICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgewogICAgaWYgKG9iaiBpbnN0YW5jZW9mIFVzZXIpIHsKICAgICAgVXNlciB0ZW1wID0gKFVzZXIpIG9iajsKCiAgICAgIHJldHVybiAoZmlyc3ROYW1lID09IHRlbXAuZmlyc3ROYW1lIHx8IGZpcnN0TmFtZSAhPSBudWxsICYmIGZpcnN0TmFtZS5lcXVhbHNJZ25vcmVDYXNlKHRlbXAuZmlyc3ROYW1lKSkKICAgICAgICAgICYmIGVtYWlsICE9IG51bGwgJiYgdGVtcC5lbWFpbCAhPSBudWxsICYmIGVtYWlsLmVxdWFsc0lnbm9yZUNhc2UodGVtcC5lbWFpbCkgCiAgICAgICAgICAmJiBsYW5ndWFnZSAhPSBudWxsICYmIHRlbXAubGFuZ3VhZ2UgIT0gbnVsbCAmJiBsYW5ndWFnZS5lcXVhbHNJZ25vcmVDYXNlKHRlbXAubGFuZ3VhZ2UpCiAgICAgICAgICAmJiBwcm9kdWN0Q29kZSAhPSBudWxsICYmIHRlbXAucHJvZHVjdENvZGUgIT0gbnVsbCAmJiBwcm9kdWN0Q29kZS5lcXVhbHNJZ25vcmVDYXNlKHRlbXAucHJvZHVjdENvZGUpCiAgICAgICAgICAmJiBzdGF0dXMgPT0gdGVtcC5zdGF0dXM7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQp9