Как сохранить объект String в ArrayList, а также удалить HashMap внутри этого ArrayList<HashMap>?

#java #arraylist #hashmap

#java #arraylist #hashmap

Вопрос:

У меня есть ArrayList<HashMap<Строка, String>>, и я хочу удалить status_id=X и только сохранить status_name=X и сохранить в ArrayList. Как я могу это сделать?

 ArrayList<HashMap<String, String>> statusList = [{status_id=1, status_name=iceCream}, {status_id=2, status_name=cake (chocolate)}]
  

Ожидаемый результат должен выводить:

 [status_name=iceCream, status_name=cake(chocolate)]
  

Комментарии:

1. Что вы пробовали до сих пор?

2. Является ли код ArrayList, который вы показали, реальным кодом Java или его псевдокодом? Я в замешательстве, потому что у нас есть HashMap и ключ и значение карты — String , но здесь у вас есть поля status_id и status_name .

3. Что and also remove the HashMap inside of this ArrayList<HashMap<String, String>> означает? Показать statusList результат выполнения.

4. @Дипак Патанкар, это было сделано путем вывода результата печати из базы данных с помощью Java-кода.

Ответ №1:

Пожалуйста, попробуйте этот код-

           public static void main(String[] args) {
            ArrayList<Map<String, String>> statusList = new ArrayList();
            Map<String, String> map1 = new HashMap<>();
            map1.put("status_id","1");
            map1.put("status_name","ice_cream");
    
            Map<String, String> map2 = new HashMap<>();
            map2.put("status_id","2");
            map2.put("status_name","cake (chocolate)");
    
            statusList.add(map1);
            statusList.add(map2);
    
            System.out.print(statusList);
    
            List<String> list1 =  statusList.stream().map(x -> x.get("status_name")).collect(Collectors.toList());
            System.out.print(list1);
          }
  

Комментарии:

1. Спасибо, Эшли, за одобрение. 🙂

Ответ №2:

Как кажется, вам нужен список того, Map.Entry куда сопоставлен ключ status_name . Если вы используете версию Java 8 , вы можете сгладить hashmap и применить к нему фильтр.

 List<Map.Entry<String, String>> statusNames = statusList.stream()
        .flatMap(hashMap -> hashMap.entrySet().stream())
        .filter(entry -> entry.getKey().equals("status_name"))
        .collect(Collectors.toList());
  

Если вы используете версию до java 7. вам нужно выполнить итерацию по элементу HashMap и добавить требуемый Map.Entry в отдельный список.

 List<Map.Entry<String, String>> statusNames = new ArrayList();

for (Map<String, String> tempMap : statusList) {
    for (Map.Entry<String, String> entrySet : tempMap.entrySet()) {
        if(entrySet.getKey().equals("status_name"))
            statusNames.add(entrySet);
    }
}
  

Комментарии:

1. Я использую Java8, и это сработало хорошо!! Спасибо Говинде Сахаре за помощь!!

2. Рад, что это помогло 🙂