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

     在做项目的过程中,我们时常回遇到这样一种状况:“判定一个对象是否已经存在与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)