为了账号安全,请及时绑定邮箱和手机立即绑定

比较前3个字符的字符串和每个字符串的前3个字符的字符串列表

比较前3个字符的字符串和每个字符串的前3个字符的字符串列表

烙印99 2021-04-04 12:13:38
样本代码需要哪些解决方案?public class TestJJava {    public static void main(String[] args) {        // TODO Auto-generated method stub        String abc="123XXXXX0";        ArrayList<String> lstValues = new ArrayList<String>();        lstValues.add("111XXXX1");        lstValues.add("122XXX1");        lstValues.add("123XXXX1");        if(lstValues.subList(0, 3).contains(abc.substring(0, 3))){            System.out.println("**** Match Found ***");        }else{            System.out.println("**** No Match Found ****");        }    }}哪个应该返回找到的匹配项,但是没有找到返回的匹配项。
查看完整描述

3 回答

?
浮云间

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 ***


查看完整回答
反对 回复 2021-04-14
?
慕村9548890

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 ****");


查看完整回答
反对 回复 2021-04-14
?
红糖糍粑

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”。因此,您将获得“未找到匹配项”


查看完整回答
反对 回复 2021-04-14
  • 3 回答
  • 0 关注
  • 190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信