Как преобразовать сложный хэш-карту в arrayList - PullRequest
0 голосов
/ 22 июня 2019

Я преобразовал этот JSON в Hashmap

http://www.mocky.io/v2/5d0dc72d3400008c00ca4a62

Я вложил Hashmap и хотел преобразовать его в ArrayList

Map<String, Bank> stringBankMap = getValues();

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

Вот класс банка

public class Bank {
    private String guid;
    private String title;
    private long date;
    private String logo;
    private HashMap<String, HashMap<String, BankList>> list;
}

Вот класс BankList

public class BankList {
    private double buy;
    private double sell;
    private String currency;
}

Что я пытался

 for(Map.Entry<String, Bank> entry1 : stringBankMap.entrySet()) {
                Bank newBank = new Bank(entry1.getKey());
                Bank bank = entry1.getValue();
                newBank.setDate(bank.getDate());
                newBank.setLogo(bank.getLogo());
                newBank.setTitle(bank.getTitle());
                List<BankList> bankListList = new ArrayList<>();
                for(Map.Entry<String, HashMap<String, BankList>> entry2 : bank.getList().entrySet()) {
                    HashMap<String, BankList> map = entry2.getValue();
                    for (Map.Entry<String, BankList> entry3 : map.entrySet()) {
                        BankList newBankList = new BankList(entry3.getKey());
                        BankList bankList = entry3.getValue();
                        newBankList.setBuy(bankList.getBuy());
                        newBankList.setSell(bankList.getSell());
                        bankListList.add(newBankList);
                    }
                }
                bankArrayList.add(newBank);
            }

Но я не понимаю, почему я получаю исключение

Пожалуйста, предложите мне другие алгоритмы, если можете

 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to core.model.Bank

1 Ответ

0 голосов
/ 22 июня 2019

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

`class Node{
String key;
Bank value;
Node(String k,Bank val){
    key=k;
    value=val;
}

} `

, затем создать ArrayList класса Node, затем добавитьэлементы в списке как [список имен] .add (новый узел ([введите ключ и значение здесь]) путем перемещения по карте, например здесь

, а затем вы можете пройти по списку вжелаемый порядок и получить ваши элементы по [имя arraylist] .get (индекс) .key или [имя arraylist] .get (индекс) .value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...