Как перебрать все данные SQLite и полностью присвоить Hashmap? - PullRequest
0 голосов
/ 19 марта 2019

В моем SQLite действительно 375 данных, но когда я пытаюсь выполнить итерацию этих данных и присвоить хэш-карте только 226 успешно назначенных данных, что не так с моим кодом ниже?

public static HashMap<String, String> getLanguage() {
    HashMap<String,String> hashMap = new HashMap<>();
    Cursor cursor = database.query(DB_TABLE
            , null
            , null
            , null
            , null
            , null, _ID + " ASC"
            , null);
    //cursor.moveToFirst();
    System.out.println("Cursor count"+cursor.getCount());
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
        hashMap.put(cursor.getString(cursor.getColumnIndex(KEY_LANG)), cursor.getString(cursor.getColumnIndex(STRING)));
    }
    return hashMap;
}

1 Ответ

0 голосов
/ 19 марта 2019

У вас есть более одной записи с одним KEY_LANG. Вы можете сохранить список STRING вместо одного STRING в значении карты

public static HashMap<String, ArrayList<String>> getLanguage() {
    HashMap<String, ArrayList<String>> hashMap = new HashMap<>();
    Cursor cursor = database.query(DB_TABLE,
            null,
            null,
            null,
            null,
            null,
            _ID + " ASC",
            null);
    //cursor.moveToFirst();
    System.out.println("Cursor count" + cursor.getCount());
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
        String key = cursor.getString(cursor.getColumnIndex(KEY_LANG));
        String value = cursor.getString(cursor.getColumnIndex(STRING));
        if (hashMap.containsKey(key)) {
            hashMap.get(key).add(value);
        } else {
            ArrayList<String> list = new ArrayList<>();
            list.add(value);
            hashMap.put(key, list);
        }
    }
    return hashMap;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...