6

Java では、char 配列から特定の要素を削除したいので、次のようにします。

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

これはどのように行うことができますか?

4

5 に答える 5

11

Java では、配列から要素を削除することはできません。ただし、次のいずれかを実行できます。

char[]保持したい要素のみをコピーして新しいものを作成します。System.arraycopy()このために、またはさらに簡単に使用できますArrays.copyOfRange()。たとえば、配列の最初の 3 文字だけをコピーするには、次のようにします。

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);
于 2012-07-11T03:32:06.297 に答える
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 を削除してメッセージを出力します。これをループに配置して、複数のアイテムを削除できます。技術的には、アイテムを削除するのではなく、アイテムを削除して新しい文字配列を作成しています。削除するたびに文字列全体を処理する必要がありますが、これは非常に非効率的です。

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"

上記のコードは、文字配列から感嘆符を削除します。文字の範囲を削除する場合は、使用しますsb.delete(10, 15);

于 2013-01-08T16:29:59.057 に答える
1

Arrays.copyOfRange次のように使用できます。

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

詳細情報

于 2012-07-11T03:51:19.540 に答える
0

はい、Arrays.copyOfRange(char[], 開始インデックス, 終了インデックス) メソッドを使用できます。

これも見ることができます --

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

于 2012-07-11T04:41:53.570 に答える
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;
}
于 2012-07-11T03:46:12.103 に答える