前几天做项目的时候,需要区分出重复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; } }
相关推荐
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中相同值元素的个数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
File[] files = file.listFiles(); //判断文件夹里是否有文件 if (files.length >= 1) { //遍历文件夹里所有子文件 for (File file1 : files) { //是文件,直接删除 if (file1.isFile()) { file1....
相信大家在操作Java的时候,经常会要检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。本文将分析几种常见用法...
主要介绍了java实现把一个List集合拆分成多个的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
31、HashSet与HashMap怎么判断集合元素重复? 33、ArrayList和LinkedList的区别,以及应用场景 34、数组和链表的区别 35、开启线程的三种方式? 36、线程和进程的区别? 38、run()和start()方法区别 39、如何...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 72 5、说明生活中遇到的二叉树,用java实现二叉树 73 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和...
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 65 5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名...
(5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...
打印出第一个大于 3.1415小于 3.1416的值 class Pi { public static void main(String[] args){ double pi =0; //定义初始值 double fenZi = 4; //分子为4 double fenMu = 1; //第一个4,可看作分母为1 的...