2016-06-15 3 views
0

Я только начал работать с arrayLists - в основном, мне нужно выяснить, как искать мой массивList, и если тот же самый объект найден, чтобы добавить новое общее значение для него или просто его замена.Поиск массиваList для объекта, а затем добавление значения к тому же самому объекту более одного раза

ie.

arrayList = (hats, $45) 

и у меня есть новое значение, чтобы добавить в шляпах (т.е. $ 10 долларов.) - так в конечном итоге новый итог для шляп = $ 55

... и если шляпы нет в списке уже добавьте его.

Любая помощь приветствуется!

+3

Это неясно. Вы говорите, что есть объект вашего собственного пользовательского класса (назовите его 'Item'), который содержит имя (« шляпы ») и значение (45)? Если да, покажите объявление этого класса. Если вы планируете сохранить имя в первом элементе arraylist и значение во втором элементе (например, 'list.add (« hats »); list.add (45);'), то вы не поняли массив списки, потому что это не сработает. –

+0

Или это ArrayList из ints ?, а 'hats' - это индекс? –

+0

@JimGarrison Да У меня есть целый пользовательский класс Store ... так что в главном меню, когда мой пользователь вводит элемент (который я получаю из класса enum) ... объект store будет помещен в массивList (другой класс), чтобы выполнить все проверки метода! –

ответ

1

Заполнение ArrayList строкой и целым будет невозможно, если вы не используете вложенный массив или карту ArraysList. Но вы можете создать простой класс для ProductName и Price и создать ArraysList, который содержит имя и цену.

public class Products { 

private String product; 
private int price; 

public Products(String product, int price){ 
    this.product = product; 
    this.price = price; 
} 
public String getProduct(){ 
    return this.product; 
} 
public int getPrice(){ 
    return this.price; 
} 

@Override 
public String toString(){ 
    return this.product +" "+ this.price; 
} 



public static void main(String[] args) throws ParseException { 

    ArrayList<Products> list = new ArrayList<>(); 
    list.add(new Products("Hat",45)); 
    list.add(new Products("Socks",10)); 

    for (Products gd: list){ 
     if (gd.getProduct().equals("Hat")){ 
      int index = list.indexOf(gd); 
      list.set(index,new Products(gd.getProduct(),gd.getPrice+10)); 
     }else { 
      // if productName not found 
      System.out.println("sorry products not available"); 
      break; 
     } 
    } 

    System.out.println(list); 

} 

}

выход:

[Hat 55, Носки 10]

Но если вы не хотите, чтобы все этот класс и хотите еще использовать ArrayList для работы, вы можете сделать это с помощью ArrayList, содержащего как имя, так и цену

ArrayList<String> list = new ArrayList<>(); 
    list.add("Hat,45"); 
    list.add("Socks,15"); 

    for (String ss:list){ 
     String[] spl = ss.split(","); 
     if (spl[0].equals("Hat")){ 
      int index = list.indexOf(ss); 
      int value = Integer.parseInt(spl[1]) +10; 
      list.set(index,(spl[0]+","+value)); 
     } 
    } 


    System.out.println(list); 

выход:

[Hat, 55, носки, 15]

+0

'gd.product.equals (« Hat »)' работает только потому, что 'main' находится внутри класса' Products'. В общем случае вам нужен аксессор, такой как 'getProduct()'. –

+0

@JimGarrison да, вот почему я создал геттер. Так почему же проголосовать? –

+0

@ Seek Addo это действительно помогло! Спасибо миллиону человек –

Смежные вопросы