集合

Collection

集合:存储对象的容器。
    
Collection:根接口,这个体系下有些集合可以存储重复元素,而另一些不允许,有一些存储元素是有序,另一些是无序的。

集合和数组的区别

长度:
  	数组一旦创建长度不可改变
 	集合长度可变
存储元素:
  	数组可以存储基本数据类型和引用数据类型
  	集合只能存储引用类型

List

List:存储元素有序(存入和取出的顺序一致),可重复。
  void add(int index, E element):在指定位置添加元素
  E get(int index):获取指定位置上的元素
  E set(int index, E element):修改指定位置的元素
  E remove(int index):删除指定元素

List三个实现类的特点:
ArrayList:底层数组,查询快,增删慢。
	  线程不安全,效率高。
Vector:底层数组,查询快,增删慢。
       线程安全,效率低。
LinkedList:底层链表,查询慢,增删快。

泛型

  泛型:创建集合是明确集合中存储的数据类型。
  语法:
  	<引用数据类型>
  
  泛型好处:
  	1.避免了强制类型转换
  	2.将运行时期错误提前到编译时期
  	3.解决了黄色警告线

forEach

 forEach:遍历数组集合
  语法:
  	for(元素的数据类型 变量名:数组或者集合的名称){
  		使用该变量,该变量就是每一个元素
   }
	注意:
	 1.底层迭代器
        好处:
	 简化了遍历代码

HashSet

如何保证元素唯一?
  	HashSet的add()方法底层依靠两个方法:hashCode()和equals()
  		方法的执行步骤:
  			首先执行hashCode(),比较对象的哈希值
  				相同:会执行equals()方法
  					内容不同:存储
  					内容相同:不存
  				不同:直接存储

TreeSet

特点:排序,唯一。
排序的方式:
	自然排序
	比较器排序
自然排序:如果一个类想要实现自然排序,必须实现comparable接口
比较器排序:需要使用带参构造,传递一个compartor的实现类对象

LinkedHashSet

特点:有序,唯一。

Map

 collection和Map的区别?
  	collection每次存储一个元素,Set集合是不可重复,List集合是可重复。
  	Map集合每次存储两个元素,键不可重复,值可重复。
 Map集合遍历方式1:
  	1.得到所有的键存放在Set集合中 -- keySet()
  	2.遍历键所在的集合,得到每一个键
  	3.通过当前的键得到对应的值
 代码:
	Set<泛型> keys = 集合名.keySet();
	for(泛型 key: keys){
    	值的数据类型 value = 集合名.get(key);
	}

  Map遍历第二种方式:
  	1.拿到每一个键值对存储在集合中
  	2.遍历键值对所在的集合,拿到每一组键值对
  	3.通过该键值对,获取键,获取值
代码:
	Map<String, String> map = new HashMap<String, String>();
	Set<Map.Entry<String, String>> entrys = map.entrySet();
		for(Map.Entry<String, String> entry:entrys){
			//K getKey():返回与此项对应的键。 
			//V getValue():返回与此项对应的值。 
			String key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key+"  "+value);
		}

HashMap

注:使用HashMap集合存储键值对,自定义对象作为键,需要在类中覆盖hashCode()和equals()方法。

  HashMap和Hashtable的区别?
  HashMap可以存储null键和null值,线程不安全,效率高
  Hashtable不可以存储null键和null值,线程安全,效率低

TreeMap

注:使用TreeMap集合存储键值对,自定义对象作为键,需要在类中实现排序接口,覆盖接口中的方法。

LinkedHashMap

LinkedHahshMap:键有序,唯一
posted @ 2020-12-27 15:50  6Ocean  阅读(46)  评论(0编辑  收藏  举报