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;阅读上一篇:JSP页面中怎么判断一个text中输入的内容是否是日期型 下一篇:返回列表