use*_*311 17 java arrays string
我有这样一个数组:
String n[] = {"google","microsoft","apple"};
Run Code Online (Sandbox Code Playgroud)
我想要做的是删除"苹果".
我的问题是非常基本的,但是,我搜索了网站,我发现java并不真正支持数组中的删除功能.我也听说过使用Java Utils,因为删除项目非常简单....我试图在谷歌上找到Java Utils,但几乎所有的链接都已经死了.
所以最后......有没有办法从字符串数组中删除字符串?
即使我使用ArrayList,我也找不到生成随机项的方法!例如:在普通数组中,我生成一个这样的字符串:
String r = myAL[rgenerator.nextInt(myAL.length)];
Run Code Online (Sandbox Code Playgroud)
在arraylist它不起作用....也许你知道一个解决方案......
Bri*_*ach 27
定义"删除".
数组是固定长度的,一旦创建就无法调整大小.您可以设置元素null以删除对象引用;
for (int i = 0; i < myStringArray.length(); i++)
{
if (myStringArray[i].equals(stringToRemove))
{
myStringArray[i] = null;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
myStringArray[indexOfStringToRemove] = null;
Run Code Online (Sandbox Code Playgroud)
如果您想要一个动态大小的数组,其中实际删除了对象并相应地调整了列表(数组)大小,请使用ArrayList <String>
myArrayList.remove(stringToRemove);
Run Code Online (Sandbox Code Playgroud)
要么
myArrayList.remove(indexOfStringToRemove);
Run Code Online (Sandbox Code Playgroud)
编辑以回应OP对他的问题和评论的编辑
String r = myArrayList.get(rgenerator.nextInt(myArrayList.size()));
Run Code Online (Sandbox Code Playgroud)
在步骤中不可能或者您需要保持对数组的引用.如果您可以更改参考,这可以帮助:
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()]);
Run Code Online (Sandbox Code Playgroud)
我不推荐以下内容,但如果您担心性能问题:
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++;
}
}
Run Code Online (Sandbox Code Playgroud)
我不推荐它,因为代码更难以阅读和维护.