针对字符串搜索Java集合

时间:2011-01-15 18:16:08

标签: java regex search collections

我有一个具有以下结构的集合......

ArrayList<String[]> schools = new ArrayList<String[]>();

我还有一个字符串说“United Berkley”

现在我想搜索上面提到的字符串“schools”,如果 String [] <中有任何匹配,则返回 String [] / strong> array。

我有基本代码,但却找不到想要的正则表达式

String target = this.Schools.get(s)[a];
if (target.matches("*")) {
   schools.add(this.Schools.get(s));
}

5 个答案:

答案 0 :(得分:1)

您的schools数据结构看起来有点......很奇怪。

你确定你想要的不是ArrayList<String>吗?

如果是这种情况,那么你可以使用:

if (schools.contains("United Berkley"))

答案 1 :(得分:1)

这个怎么样?

        List<String[]> schoolsList = new ArrayList<String[]>();
        String [] schools = {"United Berkley","Super Standford"};
        schoolsList.add(schools);
        String target = "United Berkley";
        for(String [] school:schoolsList){
            Arrays.sort(school);
            int position = Arrays.binarySearch(school,target);
            if(position>=0){
                System.out.println("Found target");
            }else{
                System.out.println("Target is not in the list");
            }
        }

打印&#34;找到目标&#34;。

答案 2 :(得分:0)

只需使用String.equals(your-String)并循环遍历数组以匹配学校。或者使用list.contains(your-String)
但我想使用HashMap会为这类事情提供更好的访问时间。

答案 3 :(得分:0)

您不需要正则表达式来搜索已知字符串 - 只需使用target.equals ("United Berkley")即可。您可以通过确保对String []数组进行排序来使自己更容易 - 使用Arrays.sort (...)使它们保持有序并使用Arrays.binarySearch(...)快速搜索它们。

我确实质疑你的数据结构的布局 - 它似乎不是做你想要的最自然的方式。 <{1}}甚至是简单的排序HashMap会更好。

答案 4 :(得分:0)

您不需要正则表达式来搜索已知字符串 - 只需使用target.equals ("United Berkley")即可。您可以通过确保对String []数组进行排序来使自己更容易 - 使用Arrays.sort (...)使它们保持有序并使用Arrays.binarySearch(...)快速搜索它们。

我确实质疑你的数据结构的布局 - 它似乎不是做你想要的最自然的方式。 <{1}}甚至是简单的排序HashMap似乎更合适。