【问题标题】:How to get the sorted 1D array out of a sorted Hashmap?如何从已排序的 Hashmap 中获取已排序的一维数组?
【发布时间】:2016-04-22 13:23:35
【问题描述】:

我已经制作了一个包含 String KeysInteger 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


【解决方案1】:

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

我猜代码没问题。问题是在“使用地图创建排序数组”部分中,我不使用名称为 result 的排序数组。我错误地使用了 rankI未排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 2019-09-02
    • 2011-09-19
    • 2016-02-26
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多