【发布时间】:2016-04-22 13:23:35
【问题描述】:
我已经制作了一个包含 String Keys 和 Integer values 的 Hashmap。更具体地说,我从 twitter API 收集数据,并根据每个用户拥有的关注者数量对 HashMap 进行降序排序。
例如:
@jeremy23:13.200 位关注者
@brandonww:10.343
@aviatoy:6.002 ...
接下来我要做的是创建一个仅包含用户姓名的一维数组(但保持排序给我的顺序)。我的目标是用最多的人制作一个排名数组。 我的问题是我找回了我的数组,但名称不是降序排列的。谁能告诉我可能是什么问题?
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));
【问题讨论】:
-
听起来你在找一行
rankI.keySet().toArray(new String[0])。
标签: java arrays api sorting twitter