自己对于集合的一个总结

一.集合的话主要有两大接口: 一个是Collection接口,另一个是Map接口

		1.Collection中:继承了Iterator接口,其子类可以通过迭代器进行遍历
				a. Set接口  :  (不可重复)
					1>HashSet:无序(事实上,内部是根据元素的hashcode进行排序的)
					2>TreeSet:按照比较结果的升序进行进行排序
					3>LinkedHashSet:按照添加顺序保存对象
				b.List接口下主要有:  
					1>ArrayList:
							1)有序,可以重复
							2)查询速度快,增删改慢
					2>LinkedList:
							1)增删改速度快
							2)查询速度慢
				c.Queue  :   先进先出的 
				d.Vector	:  矢量队列
		2.Map中:key只允许一个为null值,value可以有多个null,
				a.Hashmap:
					1>通过键值对的方式来存储
					2>其中key值可以不重复,value可以重复
					3>扩容:当元素装满容器的75%时(默认大小16),扩容2倍
				b.LinkedHashMap:如果需要按照插入顺序查询,可以使用
				c.Hashtable:和HashMap类似,不同的是HashTable不允许键或值为空
				d.TreeMap:需要有排序功能的集合(默认升序,也可以指定)

面试题:

  • Array跟ArrayList的区别:
    • Array数组的长度以及数据类型是固定的,而List不做限制,不过一般还是会通过泛型进行
      类型的限制
  • 数组与List集合的相互转换
    • 数组转集合: Array.asList(arr);
    • 集合转数组: list.toArray();
  • 集合中remove方法和iterator中remove方法的区别
    • 容错方面:集合的remove()有参数,可以根据下标或者元素进行删除,而迭代器的remove()不带参,直 接移除当前对象,所以需要配合next()方法进行使用,否则会报NullPointerException.但在移除是集合的remove方法因为内部个数发生改变,而报异常,但是iterator不会
    • 性能方面:在性能方面的话,由于集合的remove方法是通过穿进去的参数来删除某个元素,相比较而言iterator的的性能会快一些

你可能感兴趣的:(集合)