gpt4 book ai didi

Java - 不记得如何从列表中删除项目

转载 作者:行者123 更新时间:2023-12-01 10:58:14 25 4
gpt4 key购买 nike

private String[] names = { "bobby", "jones", "james", "george", "cletus", "don", "joey" };

public String getName() {
Random random = new Random();
String name = "";
int num = random.nextInt(names.length-1);
name = names[num];
names[num] = null; //HOW TO REMOVE FROM THE LIST???
return name;
}

我不记得如何从列表中删除该项目,请帮忙。

这就是我的解决方案,非常感谢大家!

private String[] names = { "bobby", "jones", "james", "george", "cletus", "don", "joey" };
ArrayList<String> list = new ArrayList<String>(Arrays.asList(names));

public String getName() {
Random random = new Random();
String name = "";
int num = random.nextInt(names.length - 1);
name = list.get(num);
list.remove(num);
return name;
}

最佳答案

数组是一种固定大小的数据结构。您无法减小它的大小。但是,您可以覆盖内容并维护一个计数器来告诉您有效大小。基本上,您将条目向左移动一个位置。

在您的示例中,您可以执行以下操作:

假设您要删除 a[5] 并且数组中有 10 个元素。

for( int inx = 5; inx < 9; inx++ )
{
array[inx] = array[inx+1]
}
int arrayLength = array.length; // Because you are overwriting one entry.

有了这个,你的数组现在看起来像

在此代码之前:

"bobby", "jones", "james", "george", "cletus", "don", "joey", "pavan", "kumar", "luke"

在此代码之后:

"bobby", "jones", "james", "george", "cletus", "joey", "pavan", "kumar", "luke", "luke"

我们已经覆盖了此处的“don”条目。现在我们必须维护一个新的计数器,它现在将是数组的长度,并且比 array.length 减一。您将使用这个新变量来处理数组。

关于Java - 不记得如何从列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33492198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com