#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. Рад, что это помогло 🙂