gpt4 book ai didi

java - 随机删除列表中的两个元素之一(一半时间删除 1 项,一半时间删除 2 项)

转载 作者:搜寻专家 更新时间:2023-11-01 03:15:38 24 4
gpt4 key购买 nike

我有一个方法将接受一个列表。如果列表包含“item1”和“item2”,它应该删除其中一个两个,但我需要随机进行(即一半时间删除“item1”,一半时间删除“item2”)。否则它应该保持 List 不变。如果传入 null,该方法将不执行任何操作。

我有一个方法:

public static void removeItem(List<String> items) {
if (items.contains("item1") &&
items.contains("item2"))
{

Random random = new Random();
int randomIndex = random.nextInt(items.size());
items.remove(randomIndex);

} else if (items.isEmpty()) {

} else {

}
}

我不确定如何让它删除一半的时间。任何帮助都适用

最佳答案

洗牌列表可以解决问题。虽然不能保证 half the time 子句。
您可以在列表中包含任意数量的项目。

可能不是最佳解决方案,但我可以建议:

    public static void main(String[] args) {

List<String> list = new ArrayList<String>();
list.add("item2");
list.add("item3");
list.add("item1");
list.add("item4");

System.out.println("Before : " + list);
removeItem(list);
System.out.println("After : " + list);
}

public static void removeItem(List<String> items) {

if (items == null) {

// Handle the null list
System.out.println("List is null");
} else if (items.contains("item1") && items.contains("item2")) {

//Shuffle the list, randomize the items and then remove `item1` or `item2` which ever appears earliest.
Collections.shuffle(items);
// Modern approach
items.stream().filter(i->i.equals("item1") || i.equals("item2")).findAny().ifPresent(i->items.remove(i));
/*
int removeIndex = 0;
for (int i = 0; i < items.size(); i++) {
if (items.get(i).equals("item1") || items.get(i).equals("item2")) {
removeIndex = i;
break;
}
}

items.remove(removeIndex);
*/
} else if (items.isEmpty()) {

} else {

}

关于java - 随机删除列表中的两个元素之一(一半时间删除 1 项,一半时间删除 2 项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330845/

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