我有一个这样的数组:
String n[] = {"google","microsoft","apple"};我想做的是去掉"apple“这个词。
我的问题很基本,然而,我搜索了网站,我发现java并不真正支持从数组中删除功能。我也听说过使用Java Utils,因为删除一个项目太简单了……我试着在google上查找Java Utils,但几乎所有的链接都失效了。
那么finally...is有什么方法可以从字符串数组中移除一个字符串吗?
即使我使用ArrayList,我也找不到在其中生成随机项的方法!对于ex:在普通数组中,我生成一个如下所示的字符串:
String r = myAL[rgenerator.nextInt(myAL.length)];在数组列表中,它不是work....maybe,你知道一个解决方案...
发布于 2011-10-30 01:13:27
定义“移除”。
数组的长度是固定的,一旦创建就不能调整大小。可以将元素设置为null来移除对象引用;
for (int i = 0; i < myStringArray.length(); i++)
{
if (myStringArray[i].equals(stringToRemove))
{
myStringArray[i] = null;
break;
}
}或
myStringArray[indexOfStringToRemove] = null;如果您想要一个动态调整大小的数组,其中对象被实际移除,并且相应地调整列表(数组)大小,请使用ArrayList
myArrayList.remove(stringToRemove); 或
myArrayList.remove(indexOfStringToRemove);在下面对OP对其问题和评论的编辑进行编辑
String r = myArrayList.get(rgenerator.nextInt(myArrayList.size()));发布于 2011-10-30 01:28:16
在on step中是不可能的,或者您需要保留对数组的引用。如果您可以更改引用,这将有所帮助:
String[] n = new String[]{"google","microsoft","apple"};
final List<String> list = new ArrayList<String>();
Collections.addAll(list, n);
list.remove("apple");
n = list.toArray(new String[list.size()]);我不推荐以下方法,但如果您担心性能问题:
String[] n = new String[]{"google","microsoft","apple"};
final String[] n2 = new String[2];
System.arraycopy(n, 0, n2, 0, n2.length);
for (int i = 0, j = 0; i < n.length; i++)
{
if (!n[i].equals("apple"))
{
n2[j] = n[i];
j++;
}
}我不推荐这样做,因为代码更难阅读和维护。
发布于 2011-10-30 01:11:41
Java中的数组不是动态的,就像集合类一样。如果您想要一个支持动态添加和删除的真实集合,请使用ArrayList<>。如果您仍然希望使用普通数组,那么找到string的索引,构造一个比原始数组小1的新数组,并使用System.arraycopy()复制前后的元素。或者手动编写一个带有跳过的复制循环,在小的数组上,差异将可以忽略不计。
https://stackoverflow.com/questions/7940337
复制相似问题