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

样本代码需要哪些解决方案?


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

        }


    }


}

哪个应该返回找到的匹配项,但是没有找到返回的匹配项。


烙印99
浏览 191回答 3
3回答

浮云间

您目前未比较前三个字符,因为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)) {&nbsp; &nbsp; System.out.println("**** Match Found ***");} else {&nbsp; &nbsp; System.out.println("**** No Match Found ****");}哪个输出**** Match Found ***

慕村9548890

您不是在比较String列表中的完整字符串,而是列表中字符串之一的子字符串。您将不得不遍历该列表并逐一检查String。String temp = abc.substring(0,3);boolean flag = true;for(String value: lstValues.subList(0, 3))&nbsp;if(value.contains(temp)) // or if(value.indexOf(temp) != -1)&nbsp; {&nbsp; &nbsp; System.out.println("**** Match Found ****");&nbsp; &nbsp; flag = false;&nbsp; &nbsp; break;&nbsp; }if(flag)&nbsp; System.out.println("**** No Match Found ****");

红糖糍粑

List.contain(Object o)检查“对象”是否在列表中。在您的情况下,列表中的对象是String,它们是“ 111XXXX1”,“ 122XXX1”和“ 122XXX1”。因此,如果以下内容仅返回truelstValues.contain("111XXXX1")->正确&nbsp;lstValues.contain("122XXX1")->正确&nbsp;lstValues.contain("122XXX1")->正确但是,如果执行以下操作,它将返回false:lstValues.contain(“ 123”)-> false。这是javadoc对List.contains(Object o)的描述如果此列表包含指定的元素,则返回true。更正式地讲,当且仅当此列表包含至少一个元素(e == null?e == null:o.equals(e))时,才返回true。这样您就可以看到它确定对象是否相等。因此,ArrayList中的所有项目均不匹配“ 123”。因此,您将获得“未找到匹配项”
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java