Java Collection.Max的打印输出

Java Collection.Max的打印输出,java,collections,Java,Collections,我有以下代码。Collections.Max返回。如何按System.out.println()显示字符串和整数no的值 public类SortMapOnKeyExample{ 公共静态void main(字符串[]args){ 列表=新的ArrayList(); 列表。添加(“苏丹”); 列表。添加(“Masum”); 列表。添加(“苏丹”); 列表。添加(“对不起”); 列表。添加(“苏丹”); 列表。添加(“Masum”); 列表。添加(“苏丹”); 列表。添加(“塔瑞克”); 列表。添加

我有以下代码。Collections.Max返回。如何按System.out.println()显示字符串和整数no的值

public类SortMapOnKeyExample{
公共静态void main(字符串[]args){
列表=新的ArrayList();
列表。添加(“苏丹”);
列表。添加(“Masum”);
列表。添加(“苏丹”);
列表。添加(“对不起”);
列表。添加(“苏丹”);
列表。添加(“Masum”);
列表。添加(“苏丹”);
列表。添加(“塔瑞克”);
列表。添加(“苏丹”);
Set uniques=新哈希集(列表);
映射计数=新的HashMap();
用于(字符串元素:uniques)
{
计数。放置(元素,集合。频率(列表,元素));
}
Collections.max(counts.entrySet(),new Comparator()){
@凌驾
公共整数比较(条目o1、条目o2){
返回(o1.getValue()-o2.getValue());
}
});
}
}

我已经尝试了很多,但是没有找到我该怎么做?请帮助我。此代码的目的是查找最大值出现的字符串及其索引?

首先,您的代码将在
O(n^2)
时间内运行-每次调用
集合。频率必须循环整个数据,并且对每个元素执行一次。您可以轻松地将此
O(n)

对于不同的数据,我们将
Test
添加五次,输出也变为:

{Test=5, sultan=5, Sorry=1, Tarek=1, Masum=2}
Test has a count of 5
sultan has a count of 5

你看,不止一个元素可能有最大计数在获得计数后,我认为你必须在映射上迭代以获得具有最大计数的元素。我不认为你能在比较器内完成它(如果这是你的主意)@BoristheSpider,你能以有效的方式编辑代码吗?我如何迭代计数?@BoristheSpider,我不知道如何存储值?谢谢Boris。这对我帮助很大。我无法用语言表达我的感激之情。希望你能因此得到奖励help@osimerpothe不客气,很高兴代码对您有所帮助。我为此花了将近一天的时间。祝你有一个美好的一天。
final Map<String, Integer> counts = new HashMap<>();
for (final String s : list) {
    final Integer c = counts.get(s);
    if (c == null) {
        counts.put(s, 1);
    } else {
        counts.put(s, c + 1);
    }
}
final List<Entry<String, Integer>> entries = new ArrayList<>(counts.entrySet());
Collections.sort(entries, new Comparator<Entry<String, Integer>>() {

    @Override
    public int compare(final Entry<String, Integer> o1, final Entry<String, Integer> o2) {
        return Integer.compare(o2.getValue(), o1.getValue());
    }
});
final MessageFormat format = new MessageFormat("{0} has a count of {1,number,integer}");
final Iterator<Entry<String, Integer>> iter = entries.iterator();
final Entry<String, Integer> first = iter.next();
System.out.println(format.format(new Object[]{first.getKey(), first.getValue()}));
while (iter.hasNext()) {
    final Entry<String, Integer> entry = iter.next();
    if (entry.getValue() != first.getValue()) {
        break;
    }
    System.out.println(format.format(new Object[]{entry.getKey(), entry.getValue()}));
}
{sultan=5, Sorry=1, Tarek=1, Masum=2}
sultan has a count of 5
{Test=5, sultan=5, Sorry=1, Tarek=1, Masum=2}
Test has a count of 5
sultan has a count of 5