2014-09-05 3 views
-1

Я пишу программу на Java, которая принимает введенную пользователем строку в одном классе.Как найти элемент в ArrayList, используя значение поля этого элемента?

В отдельном классе у меня есть массив-класс класса «Item», который содержит элементы типа String (itemName), int и double. Мне было интересно, есть ли способ преобразовать введенную пользователем String в объект типа «Item» (я слышал, что это сложно), или если есть способ получить доступ к отдельному элементу String itemName массива, чтобы сравнить его с введенной пользователем строкой.

Item.java

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

    // Getters and Setters 
    // ... 

    // Other methods 
    // ... 
} 
+1

Ваш ArrayList содержит 'Item', но содержит строки, ints и doubles? – csmckelvey

+1

Непонятно, не могли бы вы поделиться кодом 'Item' или объяснить его список? – Dici

+0

Не имеет значения, что вы слышали, но имеет значение, что вы пробовали. – JosEduSol

ответ

2

Я бы не использовал Reflection здесь: он использует базуку для убийства москита. Я бы предпочел использовать обычную 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 ... 
    } 
} 
+0

Спасибо, Степан! Это именно то, что мне нужно. – Francis

0

Вы можете, конечно, строить Item объекты пользовательского ввода, если вы определяете формат ввода, как [name:string] [i:int] [d:double] (например: john 5 3.4). Затем вам просто нужно разделить эту строку и использовать Integer.parseInt и Double.parseDouble для анализа двух последних аргументов.

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... 
    } 
} 
Смежные вопросы