java 容器的简单问题 高手 几秒就解决
在java容器中(如List),怎样得到出现次数最多的那个元素?
------解决方案--------------------呵呵,下面高手来回答
------解决方案--------------------转成数组 比较下 不知道有没有 写好的方法
------解决方案--------------------
------解决方案--------------------...也是一个经常性的问题了...
给你一个思路 不管什么容易 你把里面的元素取出来组成一个字符串str 可以吧?这个字符串的长度为m 然后遍里容器内的元素 然后利用字符串替换,把str里的所有该元素替换掉 然后这个新字符串的长度是n 该元素对应的字符串长度是a的话 那么该元素出现的次数就是(m-n)/a
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------我的想法是。。。先吧list的东西全部放到个set里面。。。那重复的就没有了
然后一个个依次比较。。。找到相同的就+1.。。最后把这个字符和在list里占多少个的数字存在个list里面。。。
然后再找出数字最大的对应的字符。。。
貌似烦了点。。额。。。
------解决方案--------------------Java code
import java.util.*;
public class FindMaxcountInList
{
public static void main(String [] args) throws Exception
{
Vector<Integer> v = new Vector<Integer>();
v.add(1);
v.add(2);
v.add(3);
v.add(4);
v.add(2);
v.add(3);
v.add(4);
v.add(5);
v.add(2);
v.add(9);
v.add(10);
v.add(8);
v.add(7);
v.add(2);
v.add(4);
v.add(2);
System.out.println(v);
int maxCount = 0;
Object objToFind = null;
while (true)
{
if (v.size() <= 0)
{
break;
}
int currentCount = 1;
Object currentObj = v.remove(0);
int begin = 0;
finder :
while (true)
{
for (int i = begin; i < v.size(); i++)
{
if (currentObj.equals(v.get(i)))
{
currentCount++;
v.remove(i);
begin = i;
continue finder;
}
}
if (currentCount > maxCount)
{
maxCount = currentCount;
objToFind = currentObj;
}
break;
}
}
System.out.println(objToFind + " : " + maxCount);
}
}
------解决方案--------------------
------解决方案--------------------
我的代码里没有对原始LIST进行保存, 实际做的时候最好用副本做
------解决方案--------------------
Java code
package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;