问题:发帖和回贴总数在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赋给一个变量)继续比,不相同两个都删掉,重复步骤,最后输出变量,为水王。