Java char Array - 删除元素

时间:2012-07-11 03:29:09

标签: java arrays char

在Java中,我想删除char数组中的某些元素,因此它会执行以下操作:

char[] Array1 = {'h','m','l','e','l','l'};
Array1 = //character index[2] to character index[5]

如何做到这一点?

5 个答案:

答案 0 :(得分:9)

在Java中,您无法从数组中删除元素。但你可以:

创建一个新的char[]只复制您想要保留的元素;为此,您可以使用System.arraycopy()甚至更简单的Arrays.copyOfRange()。例如,仅复制数组的前三个字符:

char[] array1 = {'h','m','l','e','l','l'};
char[] array2 = Arrays.copyOfRange(array1, 0, 3);

或者使用List<Character>,它允许您获取包含一系列元素的子列表:

List<Character> list1 = Arrays.asList('h','m','l','e','l','l');
List<Character> list2 = list1.subList(0, 3);

答案 1 :(得分:2)

从字符数组中删除字符的Java函数:

String msg = "johnny can't program, he can only be told what to type";
char[] mychararray = msg.toCharArray();
mychararray = remove_one_character_from_a_character_array_in_java(mychararray, 21);
System.out.println(mychararray);

public char[] remove_one_character_from_a_character_array_in_java(
                           char[] original, 
                           int location_to_remove)
{
    char[] result = new char[original.length-1];
    int last_insert = 0;
    for (int i = 0; i < original.length; i++){
        if (i == location_to_remove)
            i++;

        result[last_insert++] = original[i];
    }
    return result;
}

上述方法打印删除了索引21的消息。您可以将其放在循环中以删除多个项目。从技术上讲,您没有删除项目,而是创建了一个全新的char数组,其中删除了该项目。你必须逐步完成每个删除的整个字符串,这是非常低效的。

使用Java中的StringBuilder从字符数组中按索引删除字符:

String mystring = "inflation != stealing";
char[] my_char_array = mystring.toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(mystring);
sb.deleteCharAt(10);
my_char_array = sb.toString().toCharArray();
System.out.println(my_char_array);             //prints "inflation = stealing"

上面的代码从字符数组中删除了感叹号。如果要删除RANGE字符,请使用sb.delete(10, 15);

答案 2 :(得分:1)

您可以像这样使用Arrays.copyOfRange

array1 = Arrays.copyOfRange(array1, 2, 5);

更多info

答案 3 :(得分:0)

您可以使用此方法:

public static char[] copyArray(char[] original, int start, int length)
{
    char[] result = new char[length];
    for (int i = 0; i < length; i++)
    {
        result[i] = original[start + i];
    }
    return result;
}

答案 4 :(得分:0)

是的,您可以使用Arrays.copyOfRange(char [],起始索引,结束索引)方法。

您还可以查看此内容 -

http://www.codingdiary.com/developers/developers/diary/javaapi/java/util/SampleCode/CopyofRange8ArrayExampleCode.html