Java 开发常用判断、去重...

it2022-05-05  245

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的源码中实现了hashcode和equals方法,在加上Comparator就是可以实现去重了!


最新回复(0)