0

在某个索引中拆分字符串数组以使字符串矩阵删除您拆分的元素的最佳方法是什么。例如,对于字符串数组["Good","Bad","Sad"],如果我将其拆分为 1,它将给我一个看起来像这样的字符串矩阵[["Good"],["Sad"]]

4

2 回答 2

5

您可以使用ArrayList而不是数组。从数组列表中删除随机元素非常容易,因为它是动态的。

ArrayList>String> list = new ArrayList<String>();
...
list.remove(1);
于 2012-12-02T22:19:38.240 回答
1

ivanovic 的回答很好地解释了如何使用 java Collection (List) 从字符串序列中简单地删除一个元素。这确实是实现该目标的直接方法(删除元素)。

但是,我对 OP 问题的理解是,他获取一个字符串数组作为参数,并希望返回一个二维字符串数组。“拆分索引”元素不应包含在结果字符串 [] [] 中。

因此,根据我的理解,我添加了另一个答案:

final String[] input = new String[] { "one", "two", "three", "four", "five", "six", "seven", "eight" };
        final int len = input.length;
        final int pos = 3;
        final String[][] result = new String[2][Math.max(pos, len - pos - 1)];
        result[0] = Arrays.copyOf(input, pos);
        result[1] = Arrays.copyOfRange(input, pos + 1, len);

好吧,这甚至不是 java 方法,但它解释了如何获得结果。在上面的示例中,结果将是一个二维数组,[[one, two, three], [five, six, seven, eight]]

编辑:

将它包装在一个方法中很容易:

public static String[][] splitStringArray(String[] input, int pos) {
        final int len = input.length;
        final String[][] result = new String[2][Math.max(pos, len - pos - 1)];
        result[0] = Arrays.copyOf(input, pos);
        result[1] = Arrays.copyOfRange(input, pos + 1, len);
        return result;
    }

请注意,错误处理部分不存在,例如 pos 出站处理、NPE 检查(输入)等。我相信您可以自己完成。

于 2012-12-02T22:47:50.527 回答