【问题标题】:Searching Java Collection Against A String根据字符串搜索 Java 集合
【发布时间】:2011-06-09 17:38:19
【问题描述】:

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

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

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

现在我想在 "schools" 中搜索上述字符串,如果在任何 String[]String[] /strong> 数组。

我有那个基本代码,但找不到所需的 regex

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

【问题讨论】:

    标签: java regex search collections


    【解决方案1】:

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

    你确定你想要的不是ArrayList&lt;String&gt; 吗?

    如果是这样,那么您可以使用:

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

    【讨论】:

    • 不,它只是 ArrayList 并且它必须匹配 String[0...6] 中的所有内容
    【解决方案2】:

    这个怎么样?

            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");
                }
            }
    

    打印“找到的目标”。

    【讨论】:

    • 虽然在这里可能无关紧要,但您应该警告Arrays.sort 将修改school(可能出于某种原因顺序很重要)
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      不过,我确实质疑您的数据结构的布局 - 这似乎不是做您想做的最自然的方式。 HashMap 甚至是简单排序的 List 会更好。

      【讨论】:

        【解决方案5】:

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

        不过,我确实对您的数据结构的布局提出了质疑——这似乎不是做您想做的最自然的方式。 HashMap 甚至是简单排序的 List 似乎更合适。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-24
          • 1970-01-01
          • 1970-01-01
          • 2015-01-07
          • 2017-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多