检查属性是否等于字符串值列表
Checking if an attribute is equal to a list of string values
根据业务需求,我不需要检查属性的值是否等于给定字符串值的列表。
我想知道更好的方法是什么,以防万一有一天需要添加新的价值。这些值是否应存储在 table?
中
List<String> values = new ArrayList<>();
values.add("value1");
values.add("value2");
values.add("value3");
if(values.contains(brand){
// if the brand contains the given values
// implement a specific logic
}
谢谢
你可以这样做。如果有 Brand
class 返回一个不可变的属性列表。
Brand brand = new Brand(...);
List<String> values = new ArrayList<>();
values.add("value1");
values.add("value2");
values.add("value3");
if(brand.getAtrributes().containsAll(values)) {
// do something.
}
但是我认为,最好使用 EnumSet 并将属性定义为枚举。
enum Attr {VALUE1, VALUE2, VALUE3,VALUE4, VALUE5};
EnumSet<Attr> attr = EnumSet.of(Attr.VALUE1, Attr.VALUE2, Attr.VALUE3, Attr.VALUE4, Attr.VALUE5);
if(attr.contains(Attr.VALUE1)) {
// do something.
}
还有一个 containsAll
方法以及其他可能有用的方法。
- 创建一个包含一组枚举的记录
- 创建一个值为 2-4 的实例。
- 并使用范围特征进行验证。
record Brand(EnumSet<Attr> getAttributes){}
Brand brand = new Brand(EnumSet.of(Attr.VALUE2,Attr.VALUE3, Attr.VALUE4));
EnumSet<Attr> required = EnumSet.range(Attr.VALUE2,Attr.VALUE4);
if (brand.getAttributes().containsAll(required)) {
System.out.println("Good to go");
}
版画
Good to go.
根据业务需求,我不需要检查属性的值是否等于给定字符串值的列表。 我想知道更好的方法是什么,以防万一有一天需要添加新的价值。这些值是否应存储在 table?
中List<String> values = new ArrayList<>();
values.add("value1");
values.add("value2");
values.add("value3");
if(values.contains(brand){
// if the brand contains the given values
// implement a specific logic
}
谢谢
你可以这样做。如果有 Brand
class 返回一个不可变的属性列表。
Brand brand = new Brand(...);
List<String> values = new ArrayList<>();
values.add("value1");
values.add("value2");
values.add("value3");
if(brand.getAtrributes().containsAll(values)) {
// do something.
}
但是我认为,最好使用 EnumSet 并将属性定义为枚举。
enum Attr {VALUE1, VALUE2, VALUE3,VALUE4, VALUE5};
EnumSet<Attr> attr = EnumSet.of(Attr.VALUE1, Attr.VALUE2, Attr.VALUE3, Attr.VALUE4, Attr.VALUE5);
if(attr.contains(Attr.VALUE1)) {
// do something.
}
还有一个 containsAll
方法以及其他可能有用的方法。
- 创建一个包含一组枚举的记录
- 创建一个值为 2-4 的实例。
- 并使用范围特征进行验证。
record Brand(EnumSet<Attr> getAttributes){}
Brand brand = new Brand(EnumSet.of(Attr.VALUE2,Attr.VALUE3, Attr.VALUE4));
EnumSet<Attr> required = EnumSet.range(Attr.VALUE2,Attr.VALUE4);
if (brand.getAttributes().containsAll(required)) {
System.out.println("Good to go");
}
版画
Good to go.