在java中拆分字符串数组

时间:2012-12-02 22:18:16

标签: java arrays multidimensional-array

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

2 个答案:

答案 0 :(得分:5)

您可以使用ArrayList代替数组。从arraylist中删除随机元素非常简单,因为它是动态的。

ArrayList>String> list = new ArrayList<String>();
...
list.remove(1);

答案 1 :(得分:1)

井伊万诺维奇的回答解释了如何使用java Collection(List)从字符串序列中删除一个元素。它确实是实现这一目标的直接方式(删除元素)。

但是,我对OP的问题的理解是,他得到一个字符串数组作为参数,并希望返回一个2-D String数组。 “split-index”元素不应包含在结果String [] []。

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

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 outofbound处理,NPE检查(输入)等你可以自己做,我相信。