1.学习集合的原因?
A.数组是面向过程的,集合是面向对象的。
B。集合是类,具备类的封装,继承,多态。。。超强功能。
C。数组是固定长度,集合是可变长度
D。数组没办法获得真实的元素个数;集合可以。
E。数组只有一种固定的存值方法(顺序结构存值);集合具有多种方式,适合于多种场合。
2.集合的家庭成员:
(第一块:) Collection 【无序,不唯一】 Map【key , value】 【无序,唯一】【无序,不唯一】
list 【有序,不唯一】 set【无序,唯一】
ArrayList LinkedList Vector HashSet TreeSet HashMap | | | | |【顺序存储】 【链表存储】 【hash表】 【二叉树】 【哈希表+键值对】
3.介绍ArrayList:
存值方式: 顺序结构存储。
使用场合: 遍历和随机访问。
常用方法:
增加:add();addAll(Collection); 删除:remove(Object或者下标);removeAll(Collection);
查找:contains(Object);containsAll(Collection);size();get(下标);
迭代:Iterater:
使用: Iterator iter =list.iterator(); while(iter.hasNext()){ System.out.println(iter.next()); }
4.介绍Vector 和 ArrayList的区别:(了解)
1.相同点:原理相同,底层代码相同,方法相同
2.不同:Vector 线程安全的;每次增长1倍;老版本jdk提供操作集合的接口
ArrayList 效率高,线程不安全;每次增长0.5倍;ArrayList是新版本提供集合的接口。
5.介绍LinkedList:
存值方式:链表结构
使用场合:删除和修改
方法:
增加:add();addAll();addFirst();addLast(); 删除:remove();clear();removeAll(); removeFirst();removeLast()
查找:contains("北京");containsAll(list1);size();get(); getFirst();getLast();
迭代:Iterater: 对比LinkedList 和ArrayList的区别:
1.存值方式不一样:顺序结构,链表结构
2.使用场合不一样:遍历和随机访问;删除和修改
6. 介绍泛型:
学习泛型的原因? 保证集合在【编译期】存值时没问题;那么运行期取值也没问题。
作用: 在【编译期】,控制接收元素的类型。 泛型用在集合:
LinkedList<Integer> link = new LinkedList<Integer>();
link.addFirst(567); link.add(12); link.add(111); System.out.println(link); Iterator<Integer> list=link.iterator(); while(list.hasNext()){ Integer i=list.next(); System.out.println(i+1); }
7.集合的第二块:
Map (键 值对,key无序唯一;value 无序 不唯一)
HashMap TreeMAP HashTAble
(7.1)介绍:HashMap
存值方式: hash表存储键值对。
HashMap vs Hashtable (了解)
1. Hashtable 老jdk版本;HashMap 新版本
2. Hashtable 线程安全; HashMap 效率高,线程不安全。
3. HashMap 实现Map接口 ;Hashtable 继承 Dictionary。 4.hashMap允许空值,hashtable不允许空值
相同:原理,算法,存值方式相同。
方法:
增加: put(011, "北京");putAll(map1);
删除:remove(key); ---根据key ,去删除 value
查询:get(key)--根据key ,去删除 value。 keySet()---返回键的集合 values()---返回值的集合 containsKey(key)---如果存在由指定的键映射的“键-值对”,返回true
转载于:https://www.cnblogs.com/zhuhuibiao/p/9313885.html
相关资源:Java 面向对象编程.pdf