假设我有这个数组列表
List<String> Speach2R = new ArrayList<>();
Speach2R.add(0, "Hello");
Speach2R.add(1, "yes");
Speach2R.add(2, "Hi");
我想说
if (messages.contains(any of Speach2R strings){
said = true;
}
我也希望找到已建立消息的int,就像消息“Hi”存在一样 int MessageNumber = 2
答案 0 :(得分:0)
您可以使用ArrayList#contains
方法,因为您的列表包含字符串,ArrayList#indexOf
包含索引。
看起来像这样
String message = "yes";
boolean found = false;
int index = -1;
if(speach2R.contains(message)){
found = true;
index = speach2R.indexOf(message);
}
答案 1 :(得分:0)
如果您的消息就像一个句子,则需要iterate
覆盖List
Set<Integer> indexes = new TreeSet<>();
String message = "Hi, my name is john, and Hello";
for (String word : Speach2R){
if (message.contains(word)){
indexes.add(Speach2R.indexOf(word));
}
}
它将遍历List
的单词,并存储在Set
所找到的单词的所有索引中
System.out.println("Your message contains :");
for (Integer i : indexes){
System.out.println(Speach2R.get(i) + ", at index " + i);
}
然后你将在List
中打印找到的所有单词+他们的索引答案 2 :(得分:0)
使用java 8 Stream API,您可以执行以下操作:
messages.stream().filter( Speach2R::contains ).findAny().isPresent()