在 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);
或者使用 a 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 的消息。您可以将它放在一个循环中以删除多个项目。从技术上讲,您不是在删除一个项目,而是在创建一个全新的 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"
上面的代码从字符数组中删除了感叹号。如果要删除一系列字符,请使用sb.delete(10, 15);
您可以使用此方法:
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) 方法。
你也可以查看这个——