3 回答
![?](http://img1.sycdn.imooc.com/5333a01a0001ee5302000200-100-100.jpg)
TA贡献1829条经验 获得超4个赞
您目前未比较前三个字符,因为subList实际上并没有应用子字符串函数(此处将按原样复制列表)。您还可以List更高效地初始化(并且应该对List接口进行编程)。我愿意stream(),map每个元素都使用String.substring和anyMatch。喜欢,
String abc = "123XXXXX0";
List<String> lstValues = new ArrayList<>(List.of("111XXXX1", "122XXX1", "123XXXX1"));
if (lstValues.stream().map(x -> x.substring(0, 3)).anyMatch(abc.substring(0, 3)::equals)) {
System.out.println("**** Match Found ***");
} else {
System.out.println("**** No Match Found ****");
}
哪个输出
**** Match Found ***
![?](http://img1.sycdn.imooc.com/54584cfb0001308402200220-100-100.jpg)
TA贡献1884条经验 获得超4个赞
您不是在比较String列表中的完整字符串,而是列表中字符串之一的子字符串。
您将不得不遍历该列表并逐一检查String。
String temp = abc.substring(0,3);
boolean flag = true;
for(String value: lstValues.subList(0, 3))
if(value.contains(temp)) // or if(value.indexOf(temp) != -1)
{
System.out.println("**** Match Found ****");
flag = false;
break;
}
if(flag)
System.out.println("**** No Match Found ****");
![?](http://img1.sycdn.imooc.com/533e4d470001a00a02000200-100-100.jpg)
TA贡献1815条经验 获得超6个赞
List.contain(Object o)检查“对象”是否在列表中。在您的情况下,列表中的对象是String,它们是“ 111XXXX1”,“ 122XXX1”和“ 122XXX1”。因此,如果以下内容仅返回true
lstValues.contain("111XXXX1")
->正确 lstValues.contain("122XXX1")
->正确 lstValues.contain("122XXX1")
->正确
但是,如果执行以下操作,它将返回false:
lstValues.contain(“ 123”)-> false。
这是javadoc对List.contains(Object o)的描述
如果此列表包含指定的元素,则返回true。更正式地讲,当且仅当此列表包含至少一个元素(e == null?e == null:o.equals(e))时,才返回true。
这样您就可以看到它确定对象是否相等。因此,ArrayList中的所有项目均不匹配“ 123”。因此,您将获得“未找到匹配项”
添加回答
举报