gpt4 book ai didi

Java如何从一个ArrayList中删除一个对象,同时将它添加到另一个?

转载 作者:行者123 更新时间:2023-11-30 08:12:36 26 4
gpt4 key购买 nike

这是我第一次在这个网站上提问,明天要考试所以努力让我的代码变得更好!我将链接整个类(class)(即使是其他 3 个类(class))。

这是方法,我无法设法从 lagerplass 中删除一个对象,将其添加到 hk.addVarer 仍然有效。所有这一切背后的想法是,lagerplass 是将元素存储在商店中 (butikk),因此当人们从商店购买元素并将其放入 handlekurv 时项目从存储中删除(lagerplass):

public void leggTilHandlekurv(String varenavn)
{
for (Varer a : lagerplass)
{
if (a.getVarenavn().equals(varenavn))
{
hk.addVarer(a);
lagerplass.remove(varenavn);
}
}
}

这是整个 Butikk 类的代码

public class Butikk
{
// instance variables - replace the example below with your own
public ArrayList<Varer> lagerplass;
Handlekurv hk = new Handlekurv();

/**
* Constructor for objects of class Butikk
*/
public Butikk()
{
// initialise instance variables
lagerplass = new ArrayList<Varer>();
}

/**
* An example of a method - replace this comment with your own
*
* @param y a sample parameter for a method
* @return the sum of x and y
*/
public void nyHeadset(String lyd, String vare,int pris, String varenavn )
{
// put your code here
Headset nyHeadset = new Headset ( lyd, vare, pris, varenavn);
lagerplass.add(nyHeadset);

}

public void nyMus(String vare, int pris, String varenavn, int dpi)
{
Mus nyMus = new Mus(vare, pris, varenavn, dpi);
lagerplass.add(nyMus);
}

public void printLagerplass()
{
for (Varer vare : lagerplass)
{
vare.printDetails();
}
}

public int lagerplassSize()
{
return lagerplass.size();
}

public void fjernHeleLagerplass()
{
lagerplass.clear();
}

public void leggTilHandlekurv(String varenavn)
{
Iterator<Varer> iterator = lagerplass.iterator();
while(iterator.hasNext()) {
Varer a = iterator.next();
if (a.getVarenavn().equals(varenavn)) {
iterator.remove();
hk.addVarer(a);
}
}

public void printHeleHandlekurven()
{
hk.printHandlekurv();
}

}在这里输入代码

这是整个 Varer 类的科德

在此输入代码 公开课瓦雷尔 { //Representerer merke og pris til en vare. 私有(private)字符串变量; 私有(private)字符串 merke; 私有(private) jail ; 私有(private)字符串变量;

/**
* Constructor for klassen Varer
*/
public Varer(int pris, String varenavn, String vare)
{
merke = "Razor";
this.pris = pris;
this.varenavn = varenavn;
this.vare = vare;

}

public String getMerke()
{
return merke;
}

public int getPris()
{
return pris;
}

public String getVarenavn()
{
return varenavn;
}

public String getVare()
{
return vare;
}

public String getDetails()
{
return vare + ", " + merke +" " + varenavn + ", "+pris + " kr.";
}
public void printDetails()
{
System.out.println(vare + ", " + merke +" "+ varenavn + ", "+pris + " kr.");
System.out.println();
}

最佳答案

在迭代时从集合中移除一个项目应该会产生一个 ConcurrentModificationException,我认为这就是您得到的结果,也是您不能从中移除的原因。

要在迭代集合时删除元素,您需要获取该集合的迭代器并通过集合的迭代器将其删除。

public void leggTilHandlekurv(String varenavn) { 
Iterator<Varer> iterator = lagerplass.iterator();
while(iterator.hasNext()) {
Varer a = iterator.next();
if (a.getVarenavn().equals(varenavn)) {
iterator.remove();
hk.addVarer(a);
}
}
}

关于Java如何从一个ArrayList中删除一个对象,同时将它添加到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30352349/

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