Java数组搜索[关闭]

Posted

技术标签:

【中文标题】Java数组搜索[关闭]【英文标题】:Java Array Searching [closed] 【发布时间】:2018-06-13 06:28:31 【问题描述】:

在 java 中,一个数组包含三个单词'bad','bat','hat'。我必须编写一个函数,它会像从数组中搜索字典一样。

示例:如果我搜索 at 则该函数将返回其中包含 at 的所有单词(如 bathat 将显示在输出),如果我搜索单个字符字符,那么它将返回所有具有该字符的单词。 Java中是否有任何内置函数可用?

例如:if (string.contains(item1) || string.contains(item2) || string.contains(item3))

【问题讨论】:

String::contains(CharSequence)? idownvotedbecau.se/noresearch/ 到目前为止你有什么? 另外,请正确格式化您的问题,包括外部形式和语义。例如。单引号 (') 中的内容通常表示 Java 中的 char。对于Strings,应使用双引号(")。 【参考方案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数组搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在字符串数组中搜索特定字符串。 [关闭]

学生成绩的 JAVA 数组对[关闭]

Java:对象数组;本地实例和类级别实例有啥区别? [关闭]

Java数组排序和搜索

Java 数组 之 一维数组 遍历搜索 元素

有序数组中的线性搜索 - Java