Ob'ektlarning Arraylist-ga qanday qilib xaritani aylantirish mumkin?

Men Jsonning bunday javobini eshitganman:

{
  "status": true,
  "data": {
    "29": "Hardik sheth",
    "30": "Kavit Gosvami"
  }
}

I am using Retrofit to parse Json response. As per this answer I will have to use Map which will give all the data in Map. Now what I want is ArrayList.

PojoObject.class

public class PojoObject {
    private String mapKey, mapValue;

    public String getMapKey() {
        return mapKey;
    }

    public void setMapKey(String mapKey) {
        this.mapKey = mapKey;
    }

    public String getMapValue() {
        return mapValue;
    }

    public void setMapValue(String mapValue) {
        this.mapValue = mapValue;
    }
}

What is the best way to convert a Map to a List?

0
Dyanamik kalitlarga ega bo'lasizmi?
qo'shib qo'ydi muallif Vivek Mishra, manba
Dyanamik kalitlarga ega bo'lasizmi?
qo'shib qo'ydi muallif Vivek Mishra, manba
Nima uchun siz birinchi navbatda ro'yxatga muhtojsiz? xarita ma'lumot uchun yaxshi konteynerdir .. Agar siz haqiqatan ham xaritada oddiy döngaga kerak bo'lsa va ro'yxat uchun PojoObject moslamalarni yaratishingiz kerak bo'lsa, bu erda qanday muammo bor?
qo'shib qo'ydi muallif xander, manba
@VivekMishra ha
qo'shib qo'ydi muallif Rajesh, manba

6 javoblar

O'zingizning sinfingizni, konstruktorga ega bo'lish uchun qadriyatlarni ham kengaytira olasiz:

map.entrySet()
   .stream()
   .map(e -> new PojoObject(e.getKey(), e.getValue()))
   .collect(Collectors.toList());

Agar shunday qilmasangiz:

map.entrySet()
   .stream()
   .map(e -> {
       PojoObject po = new PojoObject();
       po.setMapKey(e.getKey());
       po.setMapValue(e.getValue());
       return po;
 }).collect(Collectors.toList());

Buni Java 8 Stream API dan foydalanganligini unutmang.

3
qo'shib qo'ydi

Buni ko'ring

List list = new ArrayList(map.values());

Yoki

hashMap.keySet().toArray();//returns an array of keys
hashMap.values().toArray();//returns an array of values

Ikkala qatyokini tartiblashtirish ham bir xil bo'lmasligi kerakligini qayd etish kerak.

yoki

hashMap.entrySet().toArray();
1
qo'shib qo'ydi
Bu Map bo'lsa ishlaydi. Agar u Map bo'lsa, OP da aytilganidek, u ArrayList yaratadi.
qo'shib qo'ydi muallif Adowrath, manba
Tartibga solish bu muammoni hal qilmadi, siz hali ham PojoObject s yo'q.
qo'shib qo'ydi muallif Adowrath, manba
bu noto'g'ri. map.values ​​() faqat qadriyatlar ro'yxatini qaytadi: "Hardik sheth", "Kavit Gosvami"
qo'shib qo'ydi muallif Conffusion, manba

Xaritani ro'yxatga aylantirish uchun ushbu usuldan foydalanishingiz mumkin

List list = new ArrayList(map.values());

Shubhasiz:

Map  map;
1
qo'shib qo'ydi
Bu bajarilmaydi Konstruktorni hal qila olmaydi 'ArrayList (java.util.Collection ;
qo'shib qo'ydi muallif Rajesh, manba
Bu Map bo'lsa ishlaydi. Agar u Map bo'lsa, OP da aytilganidek, u ArrayList yaratadi.
qo'shib qo'ydi muallif Adowrath, manba

Xaritani ro'yxatga aylantirish uchun ushbu usuldan foydalanishingiz mumkin

List list = new ArrayList(map.values());

Shubhasiz:

Map  map;
1
qo'shib qo'ydi
Bu bajarilmaydi Konstruktorni hal qila olmaydi 'ArrayList (java.util.Collection ;
qo'shib qo'ydi muallif Rajesh, manba
Bu Map bo'lsa ishlaydi. Agar u Map bo'lsa, OP da aytilganidek, u ArrayList yaratadi.
qo'shib qo'ydi muallif Adowrath, manba
ArrayList> list = new ArrayList>(); 

bu eng yaxshi usul bo'lishi mumkin.

1
qo'shib qo'ydi
Bu savolga javob berishga urinmaydi.
qo'shib qo'ydi muallif Adowrath, manba

Java-ning aniq POJO-ga o'xshashligi ko'rinadi Map.Entry siz xohlagan kabi. Shunday qilib, siz kiritilgan xaritani xaritadan disk raskadrovka qilib, quyida keltirilgan uskuna ustidan yechib olishingiz mumkin yoki siz keyingi qismga o'xshash qatorni ro'yxatga o'zgartirasiz va ishlovingiz bilan davom etishingiz mumkin.

 //fetch entry set from map
Set> set = map.entrySet();        

    for(Entry entry: set) {
        System.out.println(entry.getKey() +"," + entry.getValue());
    }

    //convert set to list
    List> list = new ArrayList(set);

    for(Entry entry: list) {
        System.out.println(entry.getKey() +"," + entry.getValue());
    }
0
qo'shib qo'ydi
Kalitning qiymatini Map.Entry bilan almashtirish mumkin emasligini unutmang, bu esa OP ning dinamik kalitlarini imkonsiz qiladi.
qo'shib qo'ydi muallif Adowrath, manba