java.util.Collections有几个方法,返回不可变的空集合。请问这种返回值有何用途?
Set set = Collections.emptySet();
System.out.println("set: " + set);
java.util.Collections有几个方法,返回不可变的空集合。请问这种返回值有何用途?
Set set = Collections.emptySet();
System.out.println("set: " + set);
有时候我们在返回数据给前端的时候,可能会遇到各种判断然后返回或者最终返回空集合。
这个Set集合可不是HashSet,经查看源码可知道该方法是没有add操作的。并且所有相关的操作方法都是围绕着空去做的。
public static final <T> Set<T> emptySet() {
return (Set<T>) EMPTY_SET;
}
/**
* @serial include
*/
private static class EmptySet<E>
extends AbstractSet<E>
implements Serializable
{
private static final long serialVersionUID = 1582296315990362920L;
public Iterator<E> iterator() { return emptyIterator(); }
public int size() {return 0;}
public boolean isEmpty() {return true;}
public boolean contains(Object obj) {return false;}
public boolean containsAll(Collection<?> c) { return c.isEmpty(); }
public Object[] toArray() { return new Object[0]; }
public <T> T[] toArray(T[] a) {
if (a.length > 0)
a[0] = null;
return a;
}
// Override default methods in Collection
@Override
public void forEach(Consumer<? super E> action) {
Objects.requireNonNull(action);
}
@Override
public boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
return false;
}
@Override
public Spliterator<E> spliterator() { return Spliterators.emptySpliterator(); }
// Preserves singleton property
private Object readResolve() {
return EMPTY_SET;
}
}
进行数据封装返回时,我确却的知道以后我只需要对这个数据进行查询,不需要增加删除;那就可以在数据为空时,直接返回 emptySet,emptyList,emptyMap...
这样做的好处就是上层应用在使用时就不需要判空了
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
3 回答1.8k 阅读
2 回答769 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.3k 阅读
其实就是有些时候,需要一个集合,只是需要一个集合而已,我不会修改这个集合,但是又需要它有集合的相关属性。