我创建了一个地图,我想按值对它进行排序,但是我需要仅将输出作为字符串列表给出。我认为我可以通过扩展可比性来对地图进行排序,然后将每个已排序的键添加到列表中,但是我不确定这是最好的方法。有任何想法吗?
//code is not finished yet//
public List<String> search(String prefix) {
Map <String, Integer> suitable_sites = new LinkedHashMap<>() ;
List<String> sorted_list = new ArrayList<>();
for (Map.Entry<String, Site<String>> site :index.entrySet()) {
Map <String, Integer> words = site.getValue().getWords() ;
int counter =0 ;
for (String word : words.keySet()) {
if (word.startsWith(prefix))
counter++;
}
int weight = counter / site.getValue().getAmmount();
if (weight == 0 )
continue;
suitable_sites.put(site.getKey(), weight);
}
return null;
}
final HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("abcd",5);
map.put("xyz",152);
map.put("pqr",1);
List list = new ArrayList<String>(map.keySet());
System.out.println("before : "+ list);
Collections.sort(list, new Comparator<String>(){
public int compare(String item1, String item2){
int compare = map.get(item1) - map.get(item2);
if(compare == 0)
{
return (item1.compareTo(item2));
}
return compare;
}
});
System.out.println("after : "+ list);
这段代码使用内联比较器。如果值与我们认为的词法顺序相同,则将在下面显示
之前:[pqr,abcd,xyz]
之后:[pqr,abcd,xyz]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句