我有一个这样的值:String[]
public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};
给定 ,有没有测试是否包含的好方法?String s
VALUES
s
网友回答:
引用数组不好。对于这种情况,我们追求一组。从Java SE 9开始,我们有.Set.of
private static final Set<String> VALUES = Set.of(
"AB","BC","CD","AE"
);
“给定字符串 s,有没有测试值是否包含 s 的好方法?”
VALUES.contains(s)
O(1)。
正确的类型,不可变,O(1)和简洁。美丽。*
只是为了清除代码开始。我们已经(更正):
public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};
这是一个可变的静态,FindBugs会告诉你非常顽皮。不要修改静态,也不允许其他代码这样做。在绝对最小值上,该字段应该是私有的:
private static final String[] VALUES = new String[] {"AB","BC","CD","AE"};
(请注意,您实际上可以删除该位。new String[];
引用数组仍然很糟糕,我们想要一组:
private static final Set<String> VALUES = new HashSet<String>(Arrays.asList(
new String[] {"AB","BC","CD","AE"}
));
(偏执狂的人,比如我自己,如果把它包裹起来,可能会感到更自在——然后甚至可以公开。Collections.unmodifiableSet
(*为了更多地了解品牌,可以预见的是,集合 API 仍然缺少不可变的集合类型,并且语法仍然太冗长,以满足我的口味。
网友回答:
Arrays.asList(yourArray).contains(yourValue)
警告:这不适用于基元数组(请参阅注释)。
String[] values = {"AB","BC","CD","AE"};
boolean contains = Arrays.stream(values).anyMatch("s"::equals);
要检查 的数组是否包含值,请使用 或 分别。int
double
long
IntStream
DoubleStream
LongStream
int[] a = {1,2,3,4};
boolean contains = IntStream.of(a).anyMatch(x -> x == 4);
网友回答:
您可以从Apache Commons Lang使用ArrayUtils.contains
public static boolean contains(Object[] array, Object objectToFind)
请注意,如果传递的数组为 。false
null
还有一些方法可用于各种原始数组。
String[] fieldsToInclude = { "id", "name", "location" };
if ( ArrayUtils.contains( fieldsToInclude, "id" ) ) {
// Do some stuff.
}
模板简介:该模板名称为【有没有测试是否包含的好方法?String sVALUESs】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。