Java 開發常用判斷、去重...

1.List中去除null

list.removeAll(Collections.singleton(null));
此類 Collections 映入的包

import org.apache.commons.collections.CollectionUtils;

2.字符串查用判空

StringUtils.isBlank()
StringUtils.isEmpty()

相對比較isBlank比isEmpty強大一點
在做判空的時候isBlank能判斷字符串中的String aa = " ";
而isEmpty是不行的

3.StringUtils引入的包

import org.apache.commons.lang3.StringUtils;

4.集合判空

CollectionUtils.isNotEmpty();
引入的包

import org.apache.commons.collections.CollectionUtils;

5.List集合去重

List<String> list = new ArrayList<>();
list.add("你好");
list.add("baby");
list.add("你好");
Set<String> set = new HashSet<String>();
set.addAll(list);
list.clear();
list.addAll(set);

6.實體對象不實現hashcode和equals方法也能實現去重邏輯

User實體對象

public class User {
	private String name;
	private String age;
	private String sex;
	private Integer id;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public User(String name, String age, String sex, Integer id) {
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.id = id;
	}

	public User() {
	}
}
List<User> list = new ArrayList<>();
list.add(new User("小白","12","女",12));
list.add(new User("李白","12","男",12));
list.add(new User("baby","12","女",12));
list.add(new User("小白","12","女",12));
list.add(new User("小白","12","女",12));

Set<User> set = new TreeSet<>(new Comparator<User>() {
    @Override
    public int compare(User user, User t1) {
        // 數據對比
        return (user.getName().compareTo(t1.getName()));
    }
});
set.addAll(list);

打印結果

User{name='baby', age='12', sex='女', id=12}
User{name='小白', age='12', sex='女', id=12}
User{name='李白', age='12', sex='男', id=12}

Set源碼

public interface Set<E> extends Collection<E> {
    int size();

    boolean isEmpty();

    boolean contains(Object var1);

    Iterator<E> iterator();

    Object[] toArray();

    <T> T[] toArray(T[] var1);

    boolean add(E var1);

    boolean remove(Object var1);

    boolean containsAll(Collection<?> var1);

    boolean addAll(Collection<? extends E> var1);

    boolean retainAll(Collection<?> var1);

    boolean removeAll(Collection<?> var1);

    void clear();

    boolean equals(Object var1);

    int hashCode();

    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 1);
    }
}

這裏用到Comparator這個類,Comparator比較器重寫了compareTo的方法。compareTo這個方法只是一個對比,做不到去重的目的。因爲Set的源碼中實現了hashcodeequals方法,在加上Comparator就是可以實現去重了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章