我正在尝试使用弹出窗口上的操作监听器将项目添加到我的数组列表中。可以看到 Action 监听器here 。我现在遇到的问题是我不知道如何将输入添加到我的数组列表中。这个问题的部分原因是我需要将项目编号设置为比列表中最高的项目编号高 1。我的数组列表的命名如下:
private static ArrayList<InventoryItem> inventory = new ArrayList<>();
InventoryItem 的类如下所示:
public class InventoryItem { //Delcare variables below
DecimalFormat formatted = new DecimalFormat("#,###.00");//set up decimal format for displaying 12.34 type values
String itemName;
int itemNumber;
public String getItemName() {
return itemName;
}
public int getItemNumber(){
return itemNumber;
}
int inStock;
double unitPrice;
double value;
double restockingFee;
double inventoryValue;
public InventoryItem(String itemName, int itemNumber, int inStock, double unitPrice) { //declare variables for this class
this.itemName = itemName;
this.itemNumber = itemNumber;
this.inStock = inStock;
this.unitPrice = unitPrice;
stockValue(); //call stock value
}
}
所以我的问题分为两部分。第一个是如何让我的 itemNumber 增加到比最高值高 1 的值?我是否只是简单地进行冒泡排序来找到最高的?第二部分是如何让它将所有项目(包括这个递增的 itemNumber)添加到我的原始数组列表中?
注意 如果需要,我可以将我的代码全部粘贴到pastebin上,因为它有点大。
编辑:根据@Prabhakaran,我添加了一些代码,我就快到了。我几乎已经让它工作了,但是当我开始浏览我的列表时,我没有看到添加的功能,那么我如何确定我确实添加了它?
String newItemName = String.valueOf(xField);
String text1 = yField.getText();
String newInventoryAmount = String.valueOf(text1);
int newNumber = Integer.parseInt(newInventoryAmount);
String text2 = zField.getText();
String newUnitPrice = String.valueOf(text2);
double newPrice = Double.parseDouble(newUnitPrice);
for (int i = 0; i >= inventory.size(); i++) {
inventory.get(inventory.size() ).getItemNumber();
int newItemNumber;
newItemNumber = i + 1;
InventoryItem item = new InventoryItem(newItemName, newItemNumber, newNumber, newPrice);
inventory.add(item);
我在这里缺少什么?难道这不应该简单地将一个项目添加到我的数组列表中吗?我知道这一定是非常简单的事情,但我似乎无法弄清楚。
这是我按 ItemName 排序的:
static ArrayList sortInventory(ArrayList<InventoryItem> unsorted) {
ArrayList<InventoryItem> sorted = new ArrayList<>(); //create new array list to sort
InventoryItem alpha = null;
int lowestIndex = **-1**;
while (unsorted.size() > 0) { //while my unsorted array is less than 0 do the following
for (int i = 0; i < unsorted.size(); i++) { //increment through
if (alpha == null) {
alpha = unsorted.get(i); //get the next line in the inventoryItem array
lowestIndex = i;
} else if (unsorted.get(i).itemName.compareToIgnoreCase(alpha.itemName) < 0) { //compare items to determine which has a higher value
alpha = unsorted.get(i);
lowestIndex = i;
}
}
sorted.add(alpha); //reset the index so it will loop until there are no more items in the unsorted array
unsorted.remove(lowestIndex);
alpha = null;
lowestIndex = **0**;
}
return sorted; //return the sorted arraylist
}
编辑:更正了最低指数,它就像黄金一样好。
最佳答案
这样做
private static ArrayList<InventoryItem> inventory = new ArrayList<>();
String newItemName = String.valueOf(xField);
String newInventoryNumber = String.valueOf(yField);
int newNumber = Integer.parseInt(newInventoryNumber);
String newUnitPrice = String.valueOf(zField);
double newPrice = Double.parseDouble(newUnitPrice);
InventoryItem item =new InventoryItem(newItemName , newInventoryNumber , newNumber , newUnitPrice ) ;
inventory.add(item);
更新
class SimpleComparator implements Comparator<InventoryItem> {
@Override
public int compare(InventoryItem o1, InventoryItem o2) {
return new Integer(o1.getItemNumber()).compareTo(o2.getItemNumber());
}
}
//Sorting based on the itemNumber.
Collections.sort(inventory,new SimpleComparator());
int newItemNumber = inventory.get(inventory.size() - 1).getItemNumber();
newItemNumber ++;
关于java - 如何向数组列表添加项目并修改功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20449965/