Я пытаюсь добавить в arraylist arraylists. У меня есть arraylist с именем prod и 2d arraylist с названием shoppingBasket.
Основная проблема у меня заключается в том, что я хочу добавить несколько товаров в корзину (ie несколько списков товаров в список shoppingBasket), но вместо при этом первый элемент корзины заменяется следующим (поэтому в корзине есть только каждый элемент). Я довольно новичок в java и не уверен, как это исправить.
Я также попытался создать еще один класс 'item', затем создать объекты отсюда, а затем добавить в массив как ArrayList, например
public class Item {
private int bar;
private String name;
private String type;
private String brand;
private String colour;
private String con;
private int quantity;
private float cost;
private String addi;
public Item (int bar, String name, String type, String brand, String colour, String con, int quantity,float cost, String addi) {
this.bar = bar;
this.name = name;
this.type = type;
this.brand = brand;
this.colour = colour;
this.con = con;
this.quantity = quantity;
this.cost = cost;
this.addi = addi;
}
public class Basket {
//arraylist for the shopping basket
private ArrayList<Item> shoppingBasket;
public Basket() {
shoppingBasket = new ArrayList<>();
}
//function adding items to the basket
public void addToBasket(int bar, String name, String type, String brand, String colour, String con, int quantity, float cost, String addi) {
Item items = new Item (bar, name, type, brand, colour, con, quantity, cost, addi);
shoppingBasket.add(items);
}
}
Когда я попробовал этот метод, Анад напечатал массив для проверки, я бы просто показал что-то вроде [Item@23455] и все равно заменил бы изначально элемент вместо того, чтобы добавить, плюс я не очень понимаю, как это сделать правильно, так что если бы кто-нибудь мог объяснить мне этот метод (если это проще использовать, чем то, что я уже сделал) это будет с благодарностью. Хотя я бы тоже предпочел, чтобы мне не пришлось слишком сильно менять свой код.
Код, о котором идет речь: функция в одном классе, которая добавляет элемент в корзину.
public class Basket {
//arraylist for the shopping basket
private ArrayList<ArrayList<String>> shoppingBasket;
public Basket() {
shoppingBasket = new ArrayList<>();
}
//function adding items to the basket
public void addToBasket(int bar, String name, String type, String brand, String colour, String con, int quantity, float cost, String addi) {
ArrayList<String> prod = new ArrayList<>();
//adding one item to the basket shop.add(bar); shop.add(name);
prod.add(Integer.toString(bar));
prod.add(name);
prod.add(type);
prod.add(brand);
prod.add(colour);
prod.add(con);
prod.add(Integer.toString(quantity));
prod.add(Float.toString(cost));
prod.add(addi);
shoppingBasket.add(prod);
System.out.println(shoppingBasket);
}
nb элементы добавляются из таблицы с использованием прослушивателя в другой таблице (каждая ячейка это другая переменная):
selectionModel.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int row = tableViewAll.getSelectedRow();
viewAllModel=(DefaultTableModel) tableViewAll.getModel();
int bar=Integer.parseInt(viewAllModel.getValueAt(row,0).toString());
String name = viewAllModel.getValueAt(row,1).toString();
String type = viewAllModel.getValueAt(row,2).toString();
String brand = viewAllModel.getValueAt(row,3).toString();
String colour= viewAllModel.getValueAt(row,4).toString();
String con = viewAllModel.getValueAt(row,5).toString();
int quantity=1;
float cost=Float.parseFloat(viewAllModel.getValueAt(row,7).toString());
String addi= viewAllModel.getValueAt(row,8).toString();
Basket item = new Basket();
item.addToBasket(bar, name, type, brand, colour, con, quantity, cost, addi);
Заранее спасибо:)