`
747017186
  • 浏览: 317471 次
社区版块
存档分类
最新评论

java list怎么计算出重复元素的个数以及是哪些元素

    博客分类:
  • java
 
阅读更多

前几天做项目的时候,需要区分出重复list里面的元素,还要知道哪些元素重复了几次。

但是我这个list不只是单纯的一个字符串或者数字,他是一个自定义的对象。所以执行起来比较麻烦。

下面看个例子:

package com.sysc.xmleditor.export;

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

public class Test {
	public static void main(String[] args) {
		A a=new A();
		a.setI(1);
		a.setS("11");
		
		A a2=new A();
		a2.setI(2);
		a2.setS("22");
		
		A a3=new A();
		a3.setI(2);
		a3.setS("22");
		
		List<A>list=new ArrayList<A>();
		list.add(a);
		list.add(a2);
		list.add(a3);
		
                //其实只要内容相同hascode的值是一样的
		System.out.println(a.hashCode());
		System.out.println(a2.hashCode());
		System.out.println(a3.hashCode());
		
		System.out.println("list:"+list);
		
		list=setRepeatedObjectCount(list);
		
		for (A l : list) {
			System.out.println(l.getCishu());
		}
	}
	
	/**
	 * 把list出现重复字体的次数设置到字体对象当中
	 * @param list
	 * @return
	 */
	private static List<A> setRepeatedObjectCount(List<A> list){
		Map<Integer, Integer> object_count = new HashMap<Integer, Integer>();
		for (A l : list) {
			Integer count = 1;
			if(object_count.get(l.hashCode()) != null) {//如果存在则count数加1
				count = object_count.get(l.hashCode()) + 1;
			}
			object_count.put(l.hashCode(), count);//map可以替换原来的,保证hascode唯一
		}
		System.out.println(object_count); //这个map存放着对象的hascode值和重复次数
		
		Set<Integer> keys=object_count.keySet();//key值的集合,就是对象的 hascode的值
		
		for (Integer key : keys) {
			for (A l : list) {
				if(key==l.hashCode()){//如果key值 和对象的hascode值相同,则设置出现次数设置vlaue
					l.setCishu(object_count.get(key));
				}
			}
		}
		
		return list;
	}
}

//自定义类
class A{
	private int i;
	private String s;
	private int cishu;
	public int getI() {
		return i;
	}
	public void setI(int i) {
		this.i = i;
	}
	public String getS() {
		return s;
	}
	public void setS(String s) {
		this.s = s;
	}
	
	public int getCishu() {
		return cishu;
	}
	public void setCishu(int cishu) {
		this.cishu = cishu;
	}
	
	//首先覆写hascode方法,保证计算hascode的值是唯一的
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return this.s.hashCode()+this.i;
	}
}

 

分享到:
评论

相关推荐

    数组,List 重复元素统计数量,找出唯一的元素

    int[] arr = { 1, 2, 2, 3, 3, 4, 4, 4, 1, 5, 6, 6, 6 }...数组和list 可以使用相同的方法,自己测试可以 控制台输出 1出现的次数:2 2出现的次数:2 3出现的次数:2 4出现的次数:3 5出现的次数:1 数组中唯一的元素是:5

    Java判断List中相同值元素的个数实例

    今天小编就为大家分享一篇Java判断List中相同值元素的个数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Test10.java

    File[] files = file.listFiles(); //判断文件夹里是否有文件 if (files.length &gt;= 1) { //遍历文件夹里所有子文件 for (File file1 : files) { //是文件,直接删除 if (file1.isFile&#40;&#41;) { file1....

    Java中高效的判断数组中某个元素是否存在详解

    相信大家在操作Java的时候,经常会要检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。本文将分析几种常见用法...

    java实现把一个List集合拆分成多个的操作

    主要介绍了java实现把一个List集合拆分成多个的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Java面试题.docx

    31、HashSet与HashMap怎么判断集合元素重复? 33、ArrayList和LinkedList的区别,以及应用场景 34、数组和链表的区别 35、开启线程的三种方式? 36、线程和进程的区别? 38、run()和start()方法区别 39、如何...

    Java面试宝典-经典

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    Java面试宝典2010版

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    java面试题大全(2012版)

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    最新Java面试宝典pdf版

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    Java面试笔试资料大全

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    java面试宝典2012

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 72 5、说明生活中遇到的二叉树,用java实现二叉树 73 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    JAVA面试宝典2010

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    Java面试宝典2012新版

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...

    Java面试宝典2012版

    4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...

    达内 coreJava 习题答案

    打印出第一个大于 3.1415小于 3.1416的值 class Pi { public static void main(String[] args){ double pi =0; //定义初始值 double fenZi = 4; //分子为4 double fenMu = 1; //第一个4,可看作分母为1 的...

Global site tag (gtag.js) - Google Analytics