如何使用该元素的字段值在ArrayList中查找元素?

时间:2014-09-05 00:24:09

标签: java object arraylist

我正在用Java编写一个程序,它在一个类中接受用户输入的String。

在一个单独的类中,我有一个类类型的数组列表' Item'其中包含String(itemName),int和double类型的元素。我想知道是否有办法将用户输入的String转换为' Item' (我听说过这很难),或者是否有办法访问数组列表中的单个String元素itemName,以将其与用户输入的String进行比较。

Item.java

public class Item {
    private String name;
    private int monetaryValue;
    private double weight;

    // Getters and Setters
    // ...

    // Other methods
    // ...
}

3 个答案:

答案 0 :(得分:4)

我不会在这里使用反射:它使用火箭筒杀死蚊子。我宁愿使用普通的Java。

请查看以下示例:

List<Item> myList = new ArrayList<Item>();
String userInputValue;

// * Add some items to myList
// ...

// * Get user input value
// ...

// * Access the array list
int len=myList.size();
for(int i=0; i<len; i++) {
    if (myList.get(i).getItemName().equals(userInputValue)) {
        // Do something ...
    }
}

答案 1 :(得分:1)

要从用户输入创建Item,您可以执行以下操作:

String input1;
String input2;
String input3;

// Assign user input to input1, input2, input3

String itemName = input1;
int data2 = Integer.parseInt(input2);
double data3 = Double.parseDouble(input3);

Item myItem = new Item(itemName, data2, data3);

要从数组列表中访问元素,您可以执行以下操作:

List<Item> items;
String input;

// Populate items

// Assignment user input to "input" variable.

for (Item item : items) {
    if (item.getItemName().equals(input)) {
        // Do something...
    }
}

答案 2 :(得分:0)

如果您定义类似Item的输入格式(例如:[name:string] [i:int] [d:double]),您当然可以从用户输入构建john 5 3.4个对象。然后你只需要拆分这个String并使用Integer.parseInt和Double.parseDouble来解析最后两个参数。