集合笔记

一.Collection关系图
Map关系图
阿T臭臭
阿T臭臭
1.集合分为两种,一种一个一个的存(Collection),另一种一对一对的存(Map)。

2.在java语言中,集合只能存储引用类型(换句话说,集合中不能存储基本类型的数据)。

3.数组使用for循环遍历,集合使用迭代遍历(集合也可以用for循环遍历)

4.有序概念:存进去什么顺序,取出来就是什么顺序(不是按照大小来排序)

5.List(接口)特点:有序可重复

6.Set(接口)特点:无序,不可重复

7.SortedSet(接口)特点:无序,不可重复,但是存进去的元素,可以按照元素的大小自动排序。

8.SortedSet接口继承Set接口。

9.ArrayList底层是采用数组存储元素的,所以ArrayList适合查询,不适合频繁的随机增删改查。

10.LinkedList底层采用的是双向链表这种数据结构存储数据的,链表适合频繁的增删元素,不适合查询操作。

11.ArrayList和LinkedList的作用相反。

12.Vector底层和ArrayLIst集合底层相同,但是Vector是线程安全的
Vector效率较低,很少使用。

13.HashSet底层是哈希表/散列表

  1. iterator是集合所依赖的迭代器对象.

15.迭代器是面向接口编程.

16./*

17.Collection集合的遍历
while(it.hasNext()) { Object o=it.next(); System.out.println(o); }

for(Iterator it=c.iterator();it.hasNext();) { System.out.println(it.next()); } //for(一次 ; boolean类型 ;) 上式都满足 没有第三个表达式,继续判断第二个

遍历集合元素的关键三步
1.创建集合
2.集合获取迭代器对象
3.使用迭代器对象的 hasNext next 方法遍历集合

Collection c=new LinkedList();

Iterator it=c.iterator();

while(it.hasNext())
{
System.out.println(it.next());
}
*/

18.List集合的遍历
/*

  • 深入List接口
  • List接口相对于Collection有特有的方法
  • Object get(int index);
    Object set(int index, Object element);
    void add(int index, Object element);
    Object remove(int index);
    等等…
  • */

19.默认的ArrayList的存储容量为10,推荐自定义容量,以免进行扩展(ArrayList底层是数组,数组扩展就需要拷贝,拷贝效率最慢)因此,推 荐自定义容量

20.ArrayList底层是数组,数组就有索引,可以利用索引配合List中的方法进行操作。

21.遍历List集合的两种方式
/*
List l=new ArrayList();

	①不通过迭代器对象进行遍历(利用List的get方法和索引)
	for(int i=0;i<l.size();i++)
	{
		System.out.println(l.get(i));
	}
	②Iterator进行遍历集合
	Iterator i1=l.iterator();
	while(i1.hasNext())
	{
		System.out.println(i1.next());
	}

*/

阿T臭臭
阿T臭臭
阿T臭臭
阿T臭臭
22.Set s1=new HashSet();
特点:无序,不重复,默认长度为16 加载因子为0.75(加载因子:假设数组长为100,当有75个元素。数组开始扩充)

23.参数列表里的参数是调用该方法的时候在当前方法栈中的临时变量,而不是对象的属性变量(仍需理解)

24.hashSet底层实际上是一个hashMap,hashMap底层采用了哈希表这种数据结构

25.哈希表又叫做散列表,哈希表底层是一个数组,这个数组中的每一个元素是一个单向链表,每个单向链表都有一个独一无二的hash值,代表数组的下标,在某个单向链表中的每一个节点上的hash值是相等的,hash值实际上是key调用hashCode方法,再通过“hash function”转换成的值。

26.如何向哈希表中添加元素
先调用被存储的key的hashCode方法,经过某个算法得出hash值,如 果在这个哈希表中,不存在这个hash值,则直接加入元素,如果该hash值已经存在,继续调用key之间的equals方法,如果equals方法返回的是false,则将该元素添加,如果equlas方法返回的是true,则放弃添加该元素。

27.HashSet其实是HashMap中的key部分,HashSet有什么特点,HashMap中的key就具有什么特点。

阿T臭臭
28. SortedSet集合存储元素为什么可以自动排序?
因为被添加的元素实现了Comparable接口
Sun编写的TreeSet集合在添加元素的时候,会调用compareTo方法完成比较

29.Map的常用方法

  • void clear()
  • boolean isEmpty() 判断该集合是否为空
  • Object remove(Object key) 通过key删除集合中的键值对
  • int size() 获取Map中键值对的个数
  • boolean containsKey(Object key) 判断Map中是否包含这样的key
  • boolean containsValue(Object value) 判断Map中是否包含这样的value
  • 返回此映射中包含的映射关系的Set视图(将Map转换成Set)
  • Set<Map.entry<k,v>>entrySet()
  • Object get(Object key) 通过key获取value
  • Object put(Object key,Object value) 向集合中添加键值对
  • Set keySet() 获取Map集合中所有的key
  • Collection values() 获取Map集合中所有的value
  • 存储在Map集合key部分的元素需要同时重写HashCode和equals方法。
  • 注意: 键值对都是用双引号包起来的
  • Map集合中,如果key重复了,采用的是覆盖
    

二.
1.Map是顶级接口(与Collection没有任何关系)

2.Map集合以键值对的方式存储元素
键特点:无序不可重复

3.HashMap类继承Map接口(所以Map接口的所有子类都具有Map接口的特点)。

4.HashMap的底层结构是哈希表/散列表,HashMap中的key等同于一个Set集合。

5.SortedMap(接口)中的key存储元素的特点:无序不可重复,但是存储的元素可以按照大小自动排序,SortedMap中的key等同于SortedSet。

6.TreeMap类实现SortedMap接口,TreeMap中的key等同于TreeSet。

7.Hashtable类:用得少
原因:线程安全,效率低

8.Properties类继承Hashtable,(很重要)
特点:属性类,也是一key和value的方式存储元素,但是key和value只
能是字符串类型。

三.Collection的几个方法练习
阿T臭臭
阿T臭臭
阿T臭臭
遍历Collection集合例子:
阿T臭臭
阿T臭臭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值