JAVA_SE基础知识——集合框架(List、Set、Map)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43841301/article/details/101056135

1.java集合框架

集合顶层Collection包含List和Set。
List的实现类包括ArrayList和LinkedList;
Set的实现类	包括HashSet(无序)和TreeSet(有序);
接口Map 实现类包括HashMap(无序)和TreeMap(有序)
数组和集合的区别:a、数组长度固定,集合长度可变
		b、数组存储的是同一种类型的元素,集合可以存储不同类型的数据
		c、数组可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用类型

Collection接口存储一组不唯一,无序的对象
List接口存储一组不唯一,有序的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象

List 默认容量为10个;超出容量后,之后每次增加当前容量的50%	

2、Collection集合的方法

a、添加功能:
boolean add(E e);//将指定的元素追加到此列表的末尾,返回boolean值
boolean add(int index, E element);//将指定的元素插入此列表中的指定位置 
boolean addAll(Collection c);//添加一个集合的元素

b、删除功能:	
void clear();//从此集合删除所有元素
boolean remove(int index);//删除该索引处的元素
boolean remove(Object o);//删除指定的元素 

c、判断功能:
boolean contains(Object o);//如果此列表中包含指定的元素,则返回true
boolean containsAll(Collection c);//判断集合中是否包含指定的集合元素
boolean isEmpty();//判断集合是否为空,集合是否为空

d、获取功能:
get(int index);//返回此列表中指定位置的元素
indexOf(Object o);//返回此列表中指定元素的第一次出现的索引,不包含则返回-1

e、交集功能:
boolean retainAll(Collection c);//两个集合都有的元素
假设有A、B两个集合,A对B做交集,最终结果保存在A中,B不变;返回值表示A是否发生过改变	
	
f、长度功能:
int size();//返回此列表的元素数
set(int index,E element);用指定的元素替换列表中制动位置的元素

3、ArrayList 与LinkedList的区别

ArrayList 实现了长度可变的数组,在内存分配连续的空间。遍历元素和随机访问元素
   	的效率比较高,查询效率高。
   LinkedList采用链表存储方式。插入,删除元素时效率比较高。

4、Map集合

Map<key,value> 接口 专门处理键值映射数据的存储,可以根据键实现对值得操作
	常用的实现类是HashMap
	put(K key,V value);//将制定的值与此映射中的指定的键关联
	keySet();//返回此地图中包含的键的Set视图
	remove(Object key);//从地图中删除指定键的映射
	get(Object key);//返回到指定键所映射的值,或null
	containsKey(Object key);//如果此映射包含指定键的映射,则返回true

	遍历Map集合:a、使用迭代器Iterator
			获取Iterator:Collection接口的iterate()方法
			boolean hasNext();//判断是否存在另一个课访问的元素
			Objiect next();//返回要访问的下一个元素(获取元素并移动到下一噶尔位置)	
		Iterator it= c.keySet().iterator();//获取Iterator
		//hasNext 判断	  next() 取出
		while (it.hasNext()) {
			System.out.println(c.get(it.next()));	//不要多次使用it.next()方法
		}						每次使用都是访问一个对象
		      b、增强型的for循环
			for(基本类型  别名:集合名 ){  }

5、Vector和ArrayList的异同

实现原理、功能相同,可以互用
主要区别:a、Vector线程安全。ArrayList重速度轻安全,线程非安全
	  b、长度需增长时,Vector默认增长一倍,ArrayList增长50%

6、Hashtable和HashMap的异同

实现原理、功能相同,可以互用
主要区别:a、Hashtable继承Dictionary类,HashMap实现Map接口
	  b、Hashtable线程安全,HashMap线程非安全
	  c、Hashtable不允许null值,HashMap允许null值

7、泛型<> 数据变的安全

解决强制类型转换时容易出现的异常:
List的get(int index)方法获取元素,需要强制转换
Map的get(Objet key)方法获取元素,需要强制转换
Iterator的next()方法获取元素 

8、HashCode的特性

a、HashCode的存在最主要用于查找的快捷性,如Hashtable,HashMap等,HashCode经常用于
   确定对象的存储地址;
b、如果两个对象相同,equals方法一定返回true,并且这两个对象的HashCode一定相同
c、这两个对象的HashCode相同 ,并不一定表示这两个对象就相同,即equals()不一定
   为true,只能说明这两个对象在一个散列存储结构中。
d、如果两个对象的equals方法被重写,那么对象的HashCode也需要重写

哈希算法也称为散列算法,是将数据依特定的算法直接指定到一个地址上

猜你喜欢

转载自blog.csdn.net/weixin_43841301/article/details/101056135