java - 如何向数组列表添加项目并修改功能

标签 java arraylist

我正在尝试使用弹出窗口上的操作监听器将项目添加到我的数组列表中。可以看到 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/

相关文章:

java - 将浮点值格式化为特定格式 - Java 与 C# 数字格式化

java - 汉诺塔计划为何有效?

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 错误JAVA

java - 查找从文件读取的字母数字数组中的数字元素并将其写入新文件

java - 检查自定义对象列表是否具有相同的 Java 8 属性值

java - ArrayList x,y坐标距离计算

java - 工作台部分未在 apache jmeter 中显示

java - 添加数据库关系信息映射到Java数据库?

java - 检查数组中的对象属性

Java - 一种采用可变参数并返回数组列表的方法?