为什么改造重新排序我的QueryMap参数?

Tyl*_*aff 2 android github-api retrofit

我正试图像这样查询github api ......

https://api.github.com/search/repositories?q=created:>=2015-07-11&sort=stars&order=desc&perpage=25&page=1
Run Code Online (Sandbox Code Playgroud)

这是我的GET

    @GET("/search")
    public void getTrending(@QueryMap Map<String,String> filters,Callback<GitResponse> response);
Run Code Online (Sandbox Code Playgroud)

这是我如何设置我的查询Map ...

    Map<String,String> searchFilters = new HashMap<>();
    searchFilters.put("created>","2015-07-11");
    searchFilters.put("sort","stars");
    searchFilters.put("order","desc");
    searchFilters.put("perpage","25");
    searchFilters.put("page", "1");


   api.getTrending(Collections.unmodifiableMap(searchFilters), new Callback<GitResponse>() {
       @Override
       public void success(GitResponse gitResponse, Response response) {
           Log.e("tag",response.toString());
       }

       @Override
       public void failure(RetrofitError error) {
           Log.e("tag",error.toString());
       }
   });
Run Code Online (Sandbox Code Playgroud)

这是通过改造格式化的网址.

https://api.github.com/search/repositories?order=desc&created > = 2015-07-11&perpage = 25&sort = stars&page = 1

请注意,params的顺序不会保留.我需要成为created >=查询正常工作的第一个参数.我试过使用,Collections.unmodifiableMap()但没有帮助.在改造文档中,他们使用的是番石榴ImmutableMap.of().我是否必须使用番石榴来保留订单?

Ser*_*kov 9

问题根本与改造无关.您有浮动订单,因为java.util.HashMap不保证订单.你应该用它LinkedHashMap来获得固定元素的顺序.

你最好知道哈希映射是如何工作的.