【问题标题】:Program to print string in sorted manner of their inserted frequency以插入频率排序的方式打印字符串的程序
【发布时间】:2012-06-16 19:51:50
【问题描述】:

假设我已插入
asd dsa asd dsa kk km ka km kk
因此,我想将 O/P 打印为:
asd:2
dsa:2
公里:2
kk:2
ka:1

这里我提供我已经实现的代码

    import java.util.*;
class Subex1
{
    public static void main(String[] args) 
    {
        try{
        List<String> l=new ArrayList<String>();
        for(String s:args)
        {
            l.add(s);
        }
        Set<String> unique = new HashSet<String>(l);
        for (String key : unique) {
            int count=Collections.frequency(l, key);
            System.out.println(key + ": " +count );
        }
    }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
}

但是这里的 O/P 是这样来的
asd: 2
卡:1
dsa:2
kk: 2
公里:2

【问题讨论】:

  • 关联数组或哈希映射是您在这里重新发明的对象。

标签: java list sorting collections


【解决方案1】:

使用比较器使用Collections.sort(originalSourceUniqueSet, new MyComparator());进行排序

并像这样实现比较器

class MyComparator implements Comparator<String>{
 List<String> originalSource;
 public MyComparator(List<String> originalSource){
  this.originalSource=originalSource;
 }
 @Override
 public int compare(String str1, String str2){
    int result = Collections.frequency(originalSource, str1) -  Collections.frequency(originalSource, str2);
    //if same frequency then sort based on natural ordering
    if(result == 0 ){
        return str1.compareTo(str2);
    }
    return result;
 }
}

【讨论】:

    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 2017-08-30
    • 2014-02-14
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多