Java数组搜索[关闭]
Posted
技术标签:
【中文标题】Java数组搜索[关闭]【英文标题】:Java Array Searching [closed] 【发布时间】:2018-06-13 06:28:31 【问题描述】:在 java 中,一个数组包含三个单词'bad','bat','hat'
。我必须编写一个函数,它会像从数组中搜索字典一样。
示例:如果我搜索 at 则该函数将返回其中包含 at 的所有单词(如 bat
和 hat
将显示在输出),如果我搜索单个字符字符,那么它将返回所有具有该字符的单词。 Java中是否有任何内置函数可用?
例如:if (string.contains(item1) || string.contains(item2) || string.contains(item3))
【问题讨论】:
String::contains(CharSequence)
? idownvotedbecau.se/noresearch/
到目前为止你有什么?
另外,请正确格式化您的问题,包括外部形式和语义。例如。单引号 ('
) 中的内容通常表示 Java 中的 char
。对于String
s,应使用双引号("
)。
【参考方案1】:
您可以流式传输数组,并使用String::contains
进行过滤。
String[] words = "bad", "bat","hat";
String filter = "at";
List<String> list = Stream.of(words)
.filter(word -> word.contains(filter))
.collect(Collectors.toList());
System.out.println(list);
【讨论】:
【参考方案2】:对于 Java 8,streaming method 将是首选,因为它可以利用多个处理器。对于早期版本的 Java,可以使用以下方法。第一个使用contains
方法,第二个使用正则表达式,可能对您更有用。
import java.util.ArrayList;
import java.util.List;
public class SearchTest
public static void main(String[] args)
final String[] words = "bad", "bat", "hat", "hate";
final String filter = "at";
final String pattern = ".*at$"; // regex matching only strings that end with "at"
System.out.println(".contains");
final String[] results1 = SearchTest.search(filter, words);
for (String match : results1)
System.out.println(match);
// regex
System.out.println("Regular Expression");
final String[] results2 = SearchTest.match(pattern, words);
for (String match : results2)
System.out.println(match);
public static String[] search(final String substring, final String[] words)
final List<String> matches = new ArrayList<String>();
for (String word : words)
if (word.contains(substring))
matches.add(word);
return matches.toArray(new String[0]);
public static String[] match(final String regex, final String[] words)
final List<String> matches = new ArrayList<String>();
for (String word : words)
if (word.matches(regex))
matches.add(word);
return matches.toArray(new String[0]);
【讨论】:
以上是关于Java数组搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章