Как получить значение из карты - PullRequest
0 голосов
/ 13 июля 2020

Я хочу знать, как мне получить значения из Map<ArrayList<String>, Object> Где String и объект хранятся как Array [] для длины, определяемой пользователем.

Вот пример:

                             int counter=0, n=0;

                              if (dataSnapshot.exists()){

                                for (DataSnapshot ds: dataSnapshot.getChildren()){

                                    loca[counter]= new ArrayList<>();

                                    itemListProduct[n]= new ItemListProduct();
                                    itemListProduct[n]= ds.getValue(ItemListProduct.class);

                                    loca[counter].add(testHeaderlist.get(counter));

                                    System.out.println(ds.child("item_NAME").getValue(String.class));

                                    objectMap.put(loca[counter],itemListProduct[n]);

                                    counter++;
                                }

Здесь testHeaderlist - это ArrayList<String>, где хранится некоторая строка. Я хотел сохранить данные следующим образом:

введите описание изображения здесь

Итак, теперь мой вопрос: как я могу получить ключ, а также объект из «dataList». Как видно из кода, которым я поделился с номером TOP "n", и объект хранится в dataList.

Дело в том, что я хочу получить, чтобы использовать его в ExpandableListView. loca как заголовок и itemListproduct как мой объект значения. Где оба хранятся в objectMap.

Кто-нибудь может решить эту проблему. Спасибо!

1 Ответ

1 голос
/ 13 июля 2020

Допускается, но довольно нетипично использовать ArrayList в качестве ключа к карте. Чтобы получить Object, вам нужно сделать следующее:

Object val = map.get(arrayList)

Здесь arrayList должен содержать те же самые строки в том же порядке, что и ключ ArrayList, который относится к желаемому объекту.

Пример

Map<List<String>, Integer> map = new HashMap<>();
List<String> key = List.of("abc", "efg");

map.put(key, 20);
Integer v = map.get(List.of("efg","abc")); // different key so
                                           // object not found
System.out.println(v); // prints null

v = map.get(List.of("abc", "efg"));
System.out.println(v); // prints 20

Вы можете получить все ключи карты, выполнив

Set<List<String>> set = map.keySet();

Вам также необходимо прочитать HashMap и ArrayList , чтобы понять, как они работают. Следующее будет продолжать заменять объект для ключа list[0]

dataList.put(list[0], object[0]);
dataList.put(list[0], object[1]);
dataList.put(list[0], object[2]);
dataList.put(list[0], object[3]);

Когда вышеупомянутое будет сделано, list[0] будет относиться только к object[3]

...