找水王

问题:发帖和回贴总数在50%以上的是“水王”。

新建一个infor类,有num和id两个属性,分别表示序号和发帖回帖人的ID。

建一个储存infor类型数据的list集合来模拟储存一些数据。

实例化map,Map<String,Integer> map=new HashMap<String,Integer>();

将ID和次数对应起来存入(过程中通过标记变量Max来筛选出水王)。

package search;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class searchtwo {

    public static void main(String[] args) {

        List <infor> list=new ArrayList<infor>();
        list.add(new infor(0, "11"));
        list.add(new infor(1, "11"));
        list.add(new infor(2, "11"));
        list.add(new infor(3, "588"));
        list.add(new infor(4, "11"));
        list.add(new infor(5, "11"));
        list.add(new infor(6, "17"));

        Map<String,Integer> map=new HashMap<String,Integer>();
        int max=0;
        String KingShui=null;
        for(int i=0;i<list.size();i++)
        {
            if(!map.containsKey(list.get(i).getId()))
            {
                map.put(list.get(i).getId(), 1);
                if(max==0)
                {
                    KingShui=list.get(i).getId();
                    max=1;
                }
            }
            else 
            {

                int num=map.get(list.get(i).getId())+1;
                if(num>max)
                {
                    KingShui=list.get(i).getId();
                    max=num;
                }
                map.put(list.get(i).getId(), num);
            }
        }
        System.out.println(KingShui);
    }

}

结果:

优化:

一次遍历

用第一个ID和第二个ID 相比,如果不一样,删掉这两个值,否则,将这个ID赋给一个变量

用第二个ID和第三个ID相比,如果不一样,删掉这两个值(然后用第四个ID和第五个ID相比,重复以上步骤),否则,变量值不变..........

总之两两顺序比较,相同保留一个(并将ID赋给一个变量)继续比,不相同两个都删掉,重复步骤,最后输出变量,为水王。

原文地址:https://www.cnblogs.com/janeszj/p/10951861.html