`
soongbo
  • 浏览: 88854 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java集合类和Map判定一个对象是否已经存在

    博客分类:
  • Java
阅读更多
     在做项目的过程中,我们时常回遇到这样一种状况:“判定一个对象是否已经存在与Collection或Map,如果不存在于其中,就将该对象加入到Collection或Map中”。这种需求对于新手经常用下边的代码来完成:
	 List<Integer> list = new ArrayList<Integer>();
		List<Integer> checkList = new ArrayList<Integer>();
		for (int i = 0; i < 5; i++) {
			list.add(i);
		}
		for (int k = 5 ; k < 7; k++) {
			checkList.add(k);
		}
		
		/**
		 * 判定checkList中的元素是否在list中已经存在
		 */
		for (Integer checkNum : checkList) {
			
			for (Integer num : list) {
				//当list中不存在这个对象是就判定将这个                                          对象加入到list中
				if (checkNum != num) {
					list.add(checkNum);
				}
			}
		}

这样做法就会报出一个异常:java.util.ConcurrentModificationException,其实这个原因很简单,就是在便利list的时候,如果这个对象不存在就加入list,那么这个for循环中list的长度其实是变化的。所以我们一般真确的做法是:
		List<Integer> list = new ArrayList<Integer>();
		List<Integer> checkList = new ArrayList<Integer>();
		for (int i = 0; i < 5; i++) {
			list.add(i);
		}
		for (int k = 5 ; k < 7; k++) {
			checkList.add(k);
		}
		
		/**
		 * 判定checkList中的元素是否在list中已经存在
		 */
		for (Integer checkNum : checkList) {
			
			if (!list.contains(checkNum)) {
				list.add(checkNum);
			}
		}

如果是Map的话就更简单了,就直接用containsKey或contaiValue就可以判定key或value是否存在于Map中了,具体做法这里就不在赘述。


分享到:
评论

相关推荐

    Java基础入门一.pdf

    集合框架(Collection & Map)是Java中用于存储对象的数据结构,包括数组(Array)、List、Set、Map等类型。数组的特点是大小类型固定、性能高效且支持边界值检查,但它只能反映最大容量而不反映实际使用大小。Java....

    AIC的Java课程1-6章

     学习ArrayList与LinkedList类,理解封装数组和链表两种方式定义集合类。  可以使用迭代器Iterator遍历集合的元素。  [*]理解泛型概念,声明和使用带有范型的集合。 第11章 集合 4...

    java经典面试题

    - `hashcode` 方法返回对象的哈希值,通常用于 `HashMap` 或其他基于哈希的集合类。它的主要目的是提高查找效率。 7. **`ArrayList`、`LinkedList`、`Vector` 的区别**: - `ArrayList` 和 `Vector` 都是基于数组...

    Java常用词汇(java英语)

    25. **Generating Partitions**(划分生成):将一个集合划分为若干个子集,常用于组合优化问题。 26. **Generating Graphs**(图的生成):构建和生成图,Java中可以自定义节点和边的数据结构。 27. **...

    JAVA核心知识点整理.pdf

    Java集合框架提供了对一组对象进行操作的接口和类,包括List、Set和Map等。ArrayList基于数组实现,Vector是线程安全的Vector,LinkedList基于链表实现。HashSet基于HashMap实现,TreeSet基于红黑树实现,而...

    JAVA核心面试知识整理

    - 集合框架:List、Set、Map接口及其实现类,泛型,集合的遍历和操作。 - Lambda表达式、Stream API和函数式编程。 - 注解(Annotation)的使用及自定义注解。 全面掌握这些Java核心知识将极大地提高你在面试中...

    最新总结java面试题

    - 虚引用也称为幽灵引用或者幻影引用,一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来获取一个对象实例。 2. **垃圾回收机制:** - 垃圾回收是自动进行的,用于释放不再使用的...

    JAVA collection集合之扑克牌游戏实例

    - **Java集合框架(Collection Framework)**:Java集合框架是提供一系列接口和类用于存储和操作对象的集合。它主要包括两个根接口:Collection和Map。其中Collection接口是集合框架的父接口,而Map接口则用于存储...

    Android校招面试指南 2018最新版本

    - **Java集合框架**:这是Java编程中非常重要的一个部分,主要用于处理数据集合。 - **ArrayList**:一种动态数组实现的数据结构,适用于频繁查询场景。 - **LinkedList**:双链表实现的数据结构,适合频繁插入...

    Groovy入门

    - `switch` 语句支持任意实现了 `isCase()` 方法的对象作为判定表达式,并且 case 支持范围和集合。 - **循环语句**: - 推荐使用集合的方法 `.each{}` 来遍历集合,而不是传统的 `for` 循环。 - 示例:`[1:2, 3:...

    2021-2022计算机二级等级考试试题及答案No.13195.docx

    - **解释**:Java 语言的一个重要特点是平台无关性,这得益于 Java 虚拟机的存在。Java 程序编译成字节码后,可以在任何支持 JVM 的平台上运行,无需重新编译。 ### Map 集合特点 8. **Map 集合的键值对概念**。 ...

    play框架手册

    但是我们可以在一个完全不同的类里定义一些拦截器,然后在任何控制器里使用@With注释来链接他们。 - 42 - Session和Flash作用域 - 42 - 04.模板引擎 - 43 - 模板语法 - 43 - Expressions: ${…} - 44 - Template ...

    CrazyEights:CrazyEights游戏

    2. **集合操作**:Kotlin提供了丰富的集合操作,如filter、map、fold等,这些在处理玩家手牌或判定游戏状态时非常有用。 3. **枚举类型**:Kotlin的枚举类型(`enum class`)可以用来表示游戏中的不同操作,例如出...

    数论模板精心整编

    大素数判定是指判断一个较大数是否为素数的过程。素因子分解则是将一个合数分解为其素因数的乘积形式。常用的素数判定方法包括米勒-拉宾素性测试、费马素性测试等。素因子分解通常采用试除法,即从最小的质数开始,...

Global site tag (gtag.js) - Google Analytics