Java 數(shù)組去重

JAVA中List對(duì)象去除重復(fù)值,大致分為兩種情況,一種是List<String>、List<Integer>這類,直接根據(jù)List中的值進(jìn)行去重

List<String> listStr = Arrays.asList("a", "b", "c", "a","a");
List<String> filltrList = listStr.stream().distinct().collect(Collectors.toList());

另一種是List<User>這種,List中存的是javabean對(duì)象,需要根據(jù)List中對(duì)象的某個(gè)值或某幾個(gè)值進(jìn)行比較去重。需要重寫對(duì)象的equals和hashCode

public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer id;

    private String username;

    private String sex;

    private LocalDate birthday;

    private String address;

    private String password;

    private Integer orgId;

    @Override
    public boolean equals(Object obj) {
        if(this == obj){
            return true;//地址相等
        }
        if(obj == null){
            return false;//非空性:對(duì)于任意非空引用x,x.equals(null)應(yīng)該返回false。
        }

        if(obj instanceof User){
            User user = (User) obj;
            //需要比較的字段相等,則這兩個(gè)對(duì)象相等
            if(this.username.equals(user.getUsername())){
                return true;
            }
        }
        return false;
    }

    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + (username == null ? 0 : username.hashCode());
        return result;
    }
}
List<User> list = new ArrayList<>();
User u1 = new  User();
u1.setId(1);
u1.setUsername("張三");
list.add(u1);

User u2 = new  User();
u2.setId(1);
u2.setUsername("張三");
list.add(u2);

User u3 = new  User();
u3.setId(1);
u3.setUsername("張三");
list.add(u3);

List<User> collect = list.stream().distinct().collect(Collectors.toList());
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容