【问题标题】:Java, search for elements of an string array and write them into another arrayJava,搜索字符串数组的元素并将它们写入另一个数组
【发布时间】:2015-11-25 13:26:49
【问题描述】:

我正在寻找一种解决方案,如何从另一个中获取包含数组。

例如: 我有一个数组: 数组= [S1!!T1, S1!!T2, S1!!T3, S2!!T1, S2!!T2, S3!!T1, S3!!T2, S3!!T3]

我正在“数组”中查找包含“S2”的元素并将它们写入另一个元素。所以我应该得到:

结果 = [S2!!T1, S2!!T2]

我已经尝试过Arrays.asList(I).contains(i),但这不是我想要的。

【问题讨论】:

  • 请展示你到目前为止所做的尝试
  • 提示:了解 array(或列表)包含的内容与每个 strings 包含的内容之间的区别。

标签: java arrays string


【解决方案1】:

如果您希望将一个数组的元素复制到另一个数组,您需要做的第一件事是遍历一个数组的元素,如果找到匹配项,则将其存储到另一个数组中。

假设你有以下数组:

String[] arr = new String[]{"S1!!T1", "S1!!T2", "S1!!T3", "S2!!T1", "S2!!T2", "S3!!T1", "S3!!T2", "S3!!T3"};

在遍历数组之前,我们不知道数组中有多少元素会匹配,所以我们有两个选择:

  1. 创建另一个与 arr 大小相同的数组(如果不是所有的 arr 条目都重新匹配,则会导致数组中出现一些空值)
  2. 使用 ArrayList,然后根据需要将 ArrayList 转换为数组

见下文:

public static void main(String[] args) {
        String[] arr = new String[]{"S1!!T1", "S1!!T2", "S1!!T3", "S2!!T1", "S2!!T2", "S3!!T1", "S3!!T2", "S3!!T3"};
        List<String> s2List = new ArrayList<String>(); 

        //loop through arr and for each element check if it contains S2
        for(int i = 0; i < arr.length; i++) {
            //if it contains S2 then it returns true and we add it to list
            if(arr[i].contains("S2")) {
                //add to list the element
                s2List.add(arr[i]); 
            }
        }

        //print the list for testing
        System.out.println(s2List); 

        //if you wish to store the elements to array then

        //now we know how many matched, so we can create array with the 
        //size of elements in s2List 
        String[] sArr = new String[s2List.size()]; 

        //Here loop through the list and assign values to array
        for(int i = 0;  i < s2List.size() ; i++) {
            sArr[i] = s2List.get(i); 
        }

        //print the array
        System.out.println(Arrays.toString(sArr));
    }

您也可以使用其他方法将列表直接转换为数组,但是,以上应该让您了解如何解决您提出的问题。

【讨论】:

    【解决方案2】:

    您可以使用 Java 8 流

    String[] filtered = Stream.of(strings).filter(s -> s.contains("S2")).toArray(String[]::new);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多