如何从已排序的Hashmap中获取已排序的1D数组?

时间:2016-04-22 03:14:24

标签: java arrays api sorting twitter

我已经制作了一个包含字符串键整数值的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));

1 个答案:

答案 0 :(得分:0)

我是StackOverflow的新手,我不知道如果我发现错误是否最好删除问题,但我想正确的做法是保留帖子。

我猜代码还可以。问题是在“使用地图创建排序数组”一节中,我不使用名称为结果的排序数组。我错误地使用 rankI ,这是没有排序。