Я получаю json
данных, как это:Как сортировать ArrayList со строкой в порядке убывания
[
{
"name": "A",
"count": "2"
},
{
"name": "B",
"count": "1"
},
{
"name": "A",
"count": "3"
},
{
"name": "C",
"count": "10"
},
{
"name": "B",
"count": "2"
}
]
Так я итерация данных, используя for
петли, нормальные вещи. Но я хотел бы, чтобы в конечном итоге с arraylist
, как это:
C -> 7
А -> 5
B -> 3
Обратите внимание, что list
является с наивысшего до самого низкого. Что я пытался до сих пор:
//create my arraylists
//has both name and count
ArrayList<String>namesWithCountList = new ArrayList<>();
//has only names
ArrayList<String>namesList = new ArrayList<>();
//get json array..
//iterate using for loop
for (int i = 0; i < myJsonArray.length(); i++) {
String nameStr = jsonObj.getString("name");
int count = jsonObj.getInt("count");
index = namesList.indexOf(name);//get index of the name
if (index < 0) {
// name doesnt exist in namesList, so we add it
namesList.add(nameStr);
namesWithCountList.add(nameStr+"-->"+count);
}else{
//name exists so we only add the count to existing list
}
}
Я знаю, что я должен использовать Comparator.sort()
, но я не знаю, как получить мой list
там, потому что я перепутала как имя и сосчитать вместе, как: C-->7
I были подчеркнуты, как должна выглядеть логика, любая помощь в этом?
Nice. Я бы, наверное, упомянул об этом, конечно, это всего лишь один способ реализовать этот компаратор. Вы знаете, вы также можете сортировать по имени и использовать вторую информацию по-другому. – GhostCat
Позвольте мне проверить это –
@Appleman Я использовал ваш пример для реализации в моем проекте, и он хорошо сортируется! Однако я не могу группировать подобные имена вместе и получать сумму подсчета каждой группы. –