Stream#concat也很有用
Set<Long> SUBSCRIBER_ALLOWED_NUMBER_CD =
Stream.concat(ORG_SUBSCRIBER_ALLOWED_NUMBER_CD.stream(),INDIVIDUAL_SUBSCRIBER_ALLOWED_NUMBER_CD.stream())
.collect(Collectors.toSet());
,
如果要使用流:
public static final Set<Long> SUBSCRIBER_ALLOWED_NUMBER_CD =
Stream.of(ORG_SUBSCRIBER_ALLOWED_NUMBER_CD,INDIVIDUAL_SUBSCRIBER_ALLOWED_NUMBER_CD)
.flatMap(Set::stream)
.collect(Collectors.toSet());
或者,就您的情况而言,如注释中所述,您可以使用Collectors.toUnmodifiableSet():
public static final Set<Long> SUBSCRIBER_ALLOWED_NUMBER_CD =
Stream.of(ORG_SUBSCRIBER_ALLOWED_NUMBER_CD,INDIVIDUAL_SUBSCRIBER_ALLOWED_NUMBER_CD)
.flatMap(Set::stream)
.collect(Collectors.toUnmodifiableSet());
,
只需指出,与仅JDK的解决方案相比,Guava处理此案的可读性更高(并且性能可能更高):
public static final Set<Long> SUBSCRIBER_ALLOWED_NUMBER_CD = ImmutableSet.builder()
.addAll(ORG_SUBSCRIBER_ALLOWED_NUMBER_CD)
.addAll(INDIVIDUAL_SUBSCRIBER_ALLOWED_NUMBER_CD)
.build();
,
您为什么不能创建第三组,而只添加两个最终组?
Set<Long> SUBSCRIBER_ALLOWED_NUMBER_CD = new HashSet<>();
SUBSCRIBER_ALLOWED_NUMBER_CD.addAll(ORG_SUBSCRIBER_ALLOWED_NUMBER_CD);
SUBSCRIBER_ALLOWED_NUMBER_CD.addAll(INDIVIDUAL_SUBSCRIBER_ALLOWED_NUMBER_CD);
前两个集合为final
仅表示您不能修改那些集合。它不会阻止您将集合读入另一个新集合。
,
单语句初始化,如果需要的话:
public static final Set<Long> SUBSCRIBER_ALLOWED_NUMBER_CD =
Collections.unmodifiableSet(
Stream.of(ORG_SUBSCRIBER_ALLOWED_NUMBER_CD,INDIVIDUAL_SUBSCRIBER_ALLOWED_NUMBER_CD)
.flatMap(Set::stream)
.collect(Collectors.toSet()));
或者,也许更具可读性:
public static final Set<Long> SUBSCRIBER_ALLOWED_NUMBER_CD;
static {
Set<Long> all = new HashSet<>();
all.addAll(ORG_SUBSCRIBER_ALLOWED_NUMBER_CD);
all.addAll(INDIVIDUAL_SUBSCRIBER_ALLOWED_NUMBER_CD);
SUBSCRIBER_ALLOWED_NUMBER_CD = Collections.unmodifiableSet(all);
}
如果预计第三组不可修改,则忽略Collections.unmodifiableSet
调用。
本文链接:https://www.f2er.com/1815253.html