我已经制作了一个包含字符串键和整数值的Hashmap。更具体地说,我从twitter API收集数据,并根据每个用户拥有的关注者数量,按降序对我的HashMap进行排序。
例如:
@ jeremy23:13.200粉丝
@brandonww:10.343
@aviatoy:6.002 ...
我要做的下一件事是创建一个仅包含用户名称的1维数组(但保持排序给我的顺序)。我的目标是与最多的人一起制作排名数组。 我的问题是我得到了我的阵列,但名字不是降序。谁能告诉我这个问题可能是什么?
HashMap<String, Integer> rankI = new HashMap<String, Integer>();
for (int i = 0; i < tweets.size(); i++) {
Status t = (Status) tweets.get(i);
String user = t.getUser().getScreenName(); // take name of user
int followersCount = t.getUser().getFollowersCount(); // and number of his followers
rankI.put(user, followersCount);
}
//--------------MAKE A SORTED LIST BY VALUES-------------
Comparator<String> comparator = new ValueComparator<String, Integer>(rankI);
TreeMap<String, Integer> result = new TreeMap<String, Integer>(comparator);
result.putAll(rankI);
System.out.println(result);
/--------------Create a sorted array using the map-------
String [] arr1 = new String[rankI.size()];
Set entries = rankI.entrySet();
Iterator entriesIterator = entries.iterator();
int i = 0;
while(entriesIterator.hasNext()){
Map.Entry mapping = (Map.Entry) entriesIterator.next();
arr1[i] = mapping.getKey().toString();
i++;
}
System.out.println(Arrays.toString(arr1));
答案 0 :(得分:0)
我是StackOverflow的新手,我不知道如果我发现错误是否最好删除问题,但我想正确的做法是保留帖子。
我猜代码还可以。问题是在“使用地图创建排序数组”一节中,我不使用名称为结果的排序数组。我错误地使用 rankI ,这是没有排序。