簡體   English   中英

Java char Array - 刪除元素

[英]Java char Array - deleting elements

在 Java 中,我想從 char 數組中刪除某些元素,因此它會執行以下操作:

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

如何才能做到這一點?

在 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);

從字符數組中刪除字符的 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 的消息。 您可以將其置於循環中以刪除多個項目。 從技術上講,您不是在刪除項目,而是在刪除項目后創建一個全新的字符數組。 每次刪除都必須遍歷整個字符串,這是非常低效的。

在 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);

您可以像這樣使用Arrays.copyOfRange

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

更多信息

您可以使用此方法:

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

是的,您可以使用 Arrays.copyOfRange(char[],starting index,ending index) 方法。

你也可以查看這個——

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM