list中如何判断相同值的个数?

vagrant_zy 2009-07-17 04:51:51
加精
比如说一个list,里面是1,1,2,2,3,3,3,4,4
如何得到1有2个,2有2个,3有3个,4有2个?
...全文
8390 155 打赏 收藏 转发到动态 举报
写回复
用AI写文章
155 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoqiulin_beijing 2012-10-25
  • 打赏
  • 举报
回复
小弟用类实现的、
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class TestArray {
public static void main(String[] args) {
List list = new ArrayList();
list.add("1");
list.add("1");
list.add("2");
list.add("2");
list.add("3");
list.add("3");
list.add("3");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
list.add("4");
seleEquals.sele(list);
seleEquals.printInfo();
}
}
class seleEquals{
private static Map<String, String> map = new HashMap<String, String>();

public static final void sele(List list){
//首先获得list的第一个元素
if(list.size() > 1){
//使用冒泡算法
for(int i=0; i<list.size(); i++){
String str = list.get(i).toString();
int sameCount = 1;
for(int j=0; j<list.size() ;j++){

if(i == j)continue;
else{
if(str.equals(list.get(j))){
sameCount ++;
}
}
}
map.put(list.get(i).toString(), sameCount + "");
}
}else if(list.size() == 1){
map.put(list.get(0).toString(), "1");
return;
}else{
return;
}
}
public static final void printInfo(){
Set<String> set = map.keySet();
for(String str : set){
System.out.println(str + " 有 " + map.get(str) + "个");
}
}
}
dragonsky_w 2012-09-19
  • 打赏
  • 举报
回复

Map<String, Integer> map = new HashMap<String, Integer>();
for(Info i:al){
map.put(i.getName(), map.get(i.getName()) != null ? map.get(i.getName()) + 1 : 1);
}

Iterator<Entry<String, Integer>> iter = map.entrySet().iterator();
Entry<String, Integer> entry = null;
while(iter.hasNext()){
entry = iter.next();
System.out.println(entry.getKey() +" " + entry.getValue());
}
至今- 2011-06-09
  • 打赏
  • 举报
回复
Java codeimport java.util.*;
public class Test2{
public static void main(String [] args) {
List<Integer> myList=Arrays.asList(1,1,2,2,3,3,3,4,4);
HashSet<Integer> hs=new HashSet<Integer>(myList);
for(Integer i:hs){
System.out.println(i+" 在List中存在" + Collections.frequency(myList,i) + "个");
}
}
}

至今- 2011-06-09
  • 打赏
  • 举报
回复
钱钱钱钱钱钱钱钱钱钱钱钱钱钱
java413 2011-06-04
  • 打赏
  • 举报
回复
Collections.frequency(list,object);
frequency,返回list中object的数量
ahut206 2011-05-29
  • 打赏
  • 举报
回复
对于这样的 我认为 不在 Java写 把 list 值写入 数据库

然后 查询数据库 这样 认为是最好的
昨天与今天 2011-05-06
  • 打赏
  • 举报
回复
再来贴一个,之前那个效率不高

//统计List集合中重复元素出现的次数
//方法一
// List<String> list1 = new ArrayList<String>();
// for (int i = 0; i < 10; i++) {
// list1.add("" + i);
// list1.add("" + i);
// list1.add("" + i);
// }
// Map map = new HashMap();
// for (int i = 0; i < list1.size(); i++) {
// //因为自己和自己比较时,也是相等,要过滤掉此项
// int count = -1;
// for (int j = 0; j < list1.size(); j++) {
// if (list1.get(i).equals(list1.get(j))) {
// count++;
// }
// }
// //加上当前值,共有count+1个
// map.put(list1.get(i), count + 1);
// }
// Set set = map.entrySet();
// Iterator iter = set.iterator();
// while (iter.hasNext()) {
// Map.Entry me = (Map.Entry) iter.next();
// System.out.print(me.getKey() + "有" + me.getValue() + "个,");
// }
//方法二
List<String> list1 = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
list1.add(""+i);
list1.add(""+i);
list1.add(""+i);
}
Map<Integer,Integer> map = new HashMap<Integer,Integer>();

for(int i = 0 ;i < list1.size() ;i ++){
//String转为Integer
Integer num = Integer.parseInt(list1.get(i));
//根据Map的特性
if(map.get(num)==null){
map.put(num,1);
}else{
map.put(num, map.get(num)+1);
}
}
Set set = map.entrySet();
Iterator iter = set.iterator();
while (iter.hasNext()) {
Map.Entry me = (Map.Entry) iter.next();
System.out.print(me.getKey() + "有" + me.getValue() + "个,");
}
昨天与今天 2011-05-06
  • 打赏
  • 举报
回复
下面是我的做法,测试没有问题。
List<String> list1 = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
list1.add("" + i);
list1.add("" + i);
list1.add("" + i);
}
Map map = new HashMap();
for (int i = 0; i < list1.size(); i++) {
//因为自己和自己比较时,也是相等,要过滤掉此项
int count = -1;
for (int j = 0; j < list1.size(); j++) {
if (list1.get(i).equals(list1.get(j))) {
count++;
}
}
//加上当前值,共有count+1个
map.put(list1.get(i), count + 1);
}
Set set = map.entrySet();
Iterator iter = set.iterator();
while (iter.hasNext()) {
Map.Entry me = (Map.Entry) iter.next();
System.out.print(me.getKey() + "有" + me.getValue() + "个,");
}
zhanglongnihao 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 marf_cn 的回复:]
把list遍历一下,元素保存到一个map<元素,数量>里
[/Quote]
用这种方法可以实现,效率也不错。代码如下:
Map<Integer, Integer> countMap = new HashMap<Integer, Integer>();
for(int i = 0; i < list.size(); i++) {
Integer num = list.get(i);
if(countMap.get(num) == null)
countMap.put(num, 1);
else
countMap.put(num, countMap.get(num)+1);
}
jackaudrey 2010-04-10
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100410/10/250d24f1-dc9c-458e-ab89-271466511c5f.html?seed=1575915055&r=64558106#r_64558106
bjt100 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 70 楼 dirful 的回复:]
22楼的好。
测试了下。
Java codeimport java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;publicclass CountValue {publicstaticvoid main(String[] args) {
List<Object> list=new ArrayList<Object>();
list.add(2);
list.add(3);
list.add(4);
list.add(2);
list.add(3);
list.add(3);
Map<Object,Integer> map=new HashMap<Object,Integer>();for(Object o :list){
map.put(o, map.get(o)==null?1:map.get(o)+1);
}for(Object i:map.keySet()){
System.out.println(i+"----->"+map.get(i));
}
}
}
[/Quote]

mark
sunboyyq 2009-11-17
  • 打赏
  • 举报
回复
mark
学习下
robrte_kong 2009-08-06
  • 打赏
  • 举报
回复
都难呀
jypapgl 2009-08-06
  • 打赏
  • 举报
回复
map的属性很好
Debby_Bryant 2009-08-05
  • 打赏
  • 举报
回复
import java.io.*;
public class numstr
{

public static void main(String[] args) throws IOException
{
int count[] = new int[10];
String s=" ";
BufferedReader inObj=new BufferedReader (new InputStreamReader(System.in));
System.out.println("请输入字符串:");

s=inObj.readLine();
for(int i=0;i<s.length();i++)
{
int n=s.charAt(i)-'0';
count[n]++;
}
for(int i=0;i<count.length;i++)
{
if(count[i]>0)
{
System.out.println(i +"出现了"+count[i]+"次");
}
}
}

}
java1109 2009-08-05
  • 打赏
  • 举报
回复
mark
feng_20080615 2009-08-05
  • 打赏
  • 举报
回复
MARK BY FENG
thinkache 2009-07-23
  • 打赏
  • 举报
回复
嘿嘿 如果元素的值就是单个汉字或者单个字母的话 或者知道这些元素的范围 开数组的方法效率是非常高的 当然如果什么条件都没有 用MAP吧
java1109 2009-07-23
  • 打赏
  • 举报
回复
mark
liqianyinghappy 2009-07-23
  • 打赏
  • 举报
回复
能不能根据那个数组中的元素先分段,然后统计在各个区间出现的元素的次数,再统计出来!急求啊,谢谢啦!
加载更多回复(132)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧