【发布时间】:2019-01-26 11:18:58
【问题描述】:
您好,我是 Java 8 的初学者,所以请耐心等待 :)
我有一个返回自定义对象列表的方法。我需要做的:我有一个disabledPaymentTypesStrings 的列表——我不知道它有多少元素。我怎样才能改变我的代码,以免写出像!paymentType.getName().equalsIgnoreCase(disabledPaymentTypesStrings.get(1))这样的每一个条件?我想以某种方式将我的整个列表“disabledPaymentTypesStrings”作为条件放在这里,但我不知道该怎么做。请给我一些提示或建议:)
private List<PaymentType> listOfPaymentTypesForChangePayment(OrderPaymentTypeParameters paymentTypeParameters) {
List<String> disabledPaymentTypesStrings = newArrayList(Splitter.on(COMMA).split(systemUtils.getChangePaymentTypeDisabled()));
return paymentTypeSelector.availablePaymentTypesForChangePayment(paymentTypeParameters).stream()
.filter(paymentType ->
!paymentType.getName().equalsIgnoreCase(disabledPaymentTypesStrings.get(0)) &&
!paymentType.getName().equalsIgnoreCase(disabledPaymentTypesStrings.get(1)) &&
!paymentType.getName().equalsIgnoreCase(disabledPaymentTypesStrings.get(2)))
.collect(toList());
}
【问题讨论】:
-
考虑将您的付款类型表示为枚举而不是字符串。使用集合而不是列表。
标签: java filter java-8 java-stream