2016-11-27 2 views
0

Я пытаюсь построить ArrayList объектов во время выполнения внутри метода с определенным именем:Java создать ArrayList объектов на время выполнения с определенным именем

public void createNewArray(String arrayName){ 

    ArrayList <StoreItem> arrayName = new ArrayList<StoreItem>(); 
} 

Причиной Я пытаюсь это потому, , Я не знаю, сколько ArrayLists мне нужно будет создать.

Что я пытаюсь сделать, это передать строковый параметр функции (createNewArray), а затем использовать этот параметр в качестве имени ArrayList.

Могу ли я сделать такую ​​вещь на Java?

+1

Нет. Если вы не знаете, сколько списков вы будете иметь, а затем создать список списков (или любой другой более подходящий сбор списков, в зависимости от вашего прецедента). –

+1

Возможно, вы ищете «карту» вместо «списка». См. [HashMap ] (https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html). Использование 'HashMap >' позволит вам хранить списки «по имени». – Nicklas

ответ

0

Используйте HashMap:

public static void main (String[] args) throws java.lang.Exception 
    { 
     HashMap<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>();   
    } 

    public static void createNewArray(String arrayName){ 
     // Create your array list here 
     ArrayList<Integer> list = new ArrayList<Integer>(); 
     map.put(arrayName, list); 
    } 
0

Я не знаю, сколько ArrayLists мне нужно будет создать.

Как насчет использования списка массивов списков массивов? Эти вещи существуют, вы знаете.

ArrayList<ArrayList<StoreItem>> myLists = new ArrayList<>(); 

И вы можете использовать его как обычный список массива:

myLists.add(new ArrayList<>()); 
myLists.get(0).add(new StoreItem()); 
// ... 

В качестве альтернативы, если вы хотите получить доступ к одному из ваших списков с помощью строки, вы можете попробовать хэш-карту списков массивов :

HashMap<String, ArrayList<StoreItem>> myLists = new HashMap<>(); 

И вы можете просто использовать его как обычный хэш-карта:

myLists.put("foo", new ArrayList<>()); 
myLists.get("foo").add(new StoreItem()); 
// ... 
0

Почему бы не использовать HashMap из ArrayList?

public class MyArrays <T> { 

    protected HashMap<String, ArrayList<T>> arrays = new HashMap<>(); 

    public void createNewArray(String arrayName) { 
     arrays.put(arrayName, new ArrayList<T>()); 
    } 

    public ArrayList<T> getArray(String arrayName) { 
     return arrays.get(arrayName); 
    } 

} 

Вы можете просто использовать его таким образом:

MyArrays<StoredItem> arr = new MyArrays<>(); 
arr.createNewArray("first"); 
... 
ArrayList<StoredItem> first = arr.getArray("first"); 
Смежные вопросы