需要解决的示例代码?
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 ****");
}
}
}
应该返回找到的匹配项,但找不到匹配项。
答案 0 :(得分:2)
您当前未比较前三个字符,因为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 ***
答案 1 :(得分:1)
您不是在比较列表中的完整ERROR TypeError: this.join is not a function
,而是列表中字符串之一的子字符串。
您将不得不遍历该列表,并逐一检查每个import { Injectable } from '@angular/core';
import * as io from 'socket.io-client';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class ChatService {
private url = 'http://localhost:5000/';
private socket;
constructor() {
this.socket = io(this.url, {
"query": "token=XXXX"
});
this.socket.on('connect', function () {
console.log("Connection Made.");
this.join();
});
}
public join(): void {
this.socket.emit('join', {
"login_token": "XXXX"
});
}
public sendMessage(message) {
this.socket.emit('message', message);
}
public getMessages = () => {
return Observable.create((observer) => {
this.socket.on('new-message', (message) => {
observer.next(message);
});
});
}
}
。
String
答案 2 :(得分:0)
这就是你应该做的。
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 ****");
}
浏览列表,检查每个条目,直到找到匹配项。
答案 3 :(得分:0)
List.contain(Object o)检查“对象”是否在列表中。在您的情况下,列表中的对象是String,它们是“ 111XXXX1”,“ 122XXX1”和“ 122XXX1”。因此,如果以下内容仅返回true
lstValues.contain("111XXXX1")
->是
lstValues.contain("122XXX1")
->是
lstValues.contain("122XXX1")
->是
但是,如果执行以下操作,它将返回false:
lstValues.contain(“ 123”)->否。
这是javadoc对List.contains(Object o)所说的
如果此列表包含指定的元素,则返回true。更正式地说,当且仅当此列表包含至少一个元素(e == null?e == null:o.equals(e))时,才返回true。
因此您可以看到它确定对象是否相等。因此,ArrayList中的所有项目都不匹配“ 123”。因此,您将获得“未找到匹配项”
答案 4 :(得分:0)
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 ****");
}
}`