[英]Compare First 3 Character String with List of String of Each String First 3 Character
樣本代碼需要哪些解決方案?
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 ****");
}
}
}
應該返回找到的匹配項,但找不到返回的匹配項。
您目前未比較前三個字符,因為subList
實際上並未應用子字符串函數(此處它按原樣復制列表)。 您還可以更有效地初始化List
(並且應該對List
接口進行編程)。 我將stream()
並使用String.substring
和anyMatch
map
每個元素。 喜歡,
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 ***
您不是在比較列表中的完整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 ****");
這就是您應該做的。
String first3 = abc.substring(0,3);
boolean found = false;
for (String s : lstValues) {
if (s.startsWith(first3)) {
found = true;
break;
}
}
if (found) {
System.out.println("**** Match Found ***");
} else {
System.out.println("**** No Match Found ****");
}
瀏覽列表,檢查每個條目,直到找到匹配項。
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”。 因此,您將獲得“未找到匹配項”
Java 1.7
嘗試這個 ..
`public static void main(String[] args) {
String abc = "123XXXXX0";
ArrayList<String> lstValues = new ArrayList<String>();
lstValues.add("111XXXX1");
lstValues.add("122XXX1");
lstValues.add("123XXXX1");
boolean found = false;
for (String temp : lstValues.subList(0, 3)) {
if (temp.contains(abc.substring(0, 3))) {
found = true;
break;
}
}
if (found) {
System.out.println("**** Match Found ***");
} else {
System.out.println("**** No Match Found ****");
}
}`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.