Collection体系初阶学习

Collection体系

在学习Collection体系的时候首先应该从整体看:
在这里插入图片描述
知识点补充:

存放数据的容器: 数组:
1: 数组的长度固定:

Student stu[] = new Student[20];

new Student(“lisi”,21);

数组扩容:
(1)创建一个临时的数组:
(2)将数组的内容copy到 临时数组。
(3)原来的数组扩容:
(4)把临时数组当中的内容copy回来:

2: 集合: 存放数据。
当存放的内容数量不固定,不确定,有限采用集合。

3: 区别:
(1)数组的长度是固定。
数组存放的数据类型,必须相同或者是相兼容:
(2)集合自动扩容。
集合当中可以存放任意的数据类型:

一: 集合:
1: 在JDK1.0 时候,提供了集合:

线性表: 
  Vector 
    |
  stack 

映射结构:
Dictionary(目录)
|
Hashtable
|
Properties

在JDK1.2 新添加了集合类:  形成了集合框架: 

线性表结构:
Collection(接口)
|-------List: (接口) 允许重复元素:
|------ArrayList: (重要)
|------Vector:
|------Stack:
|------LinkedList:
|-------Set: (接口) 元素不能重复:
|------HashSet:
|------TreeSet:
|------LinkedHashSet:
|-------Queue: (接口)
|------LinkedList:

实现类: 底层根据数据结构不同而区分: 


映射结构; 
Map
|----HashMap: (重点)
|----TreeMap: 
|----Hashtable:
|----Properties: (重点)

学习: 看顶层,用底层:

二: 集合: 位于java.util.*;

Collection :接口: 

add(Object obj);
addAll(Collection c); 

remove(Object);
removeAll(Collection c); 

clear(); 
size(); 
contains(); 
containsAll(); 
isEmpty(); 
toArray(); 
retainAll(); 

iterator(); 

三: 集合的细节:

  • 1: 存放在集合当中,存放对象的引用:
  • 2: 往集合当中存放内容, 元素失去了原有的类型,自动提升为Object类型:
  • 3: 集合当中不能存放基本数据类型,但是在JDK1.5后,有自动装箱功能:

四: List接口:
特点: 存放的元素有序,可重复, 支持下标访问。
List集合: 围绕索引添加了一系列的方法:

增加:
add(index, obj);
addAll(int index, Collection<? extends E> c)

删除:
remove(int index) ;

改:
set(int index, E element)

查:
get(int index)

一:集合:
Collection集合:
|—List: 元素可重复,有序,支持下标访问:
|----ArrayList: 底层是数组: 查询块, 增删相比稍慢,可以被接收。
该类的所有的方法都是异步:数据不安全, 效率高。
|---- new ArrayList(); 初始容量大小为10. 加载因子: 0.5。 50%扩展:
|---- new ArrayList(Collection c);将Collection集合 的实现类转换成一个ArrayList集合:
|---- new ArrayList(int num); 指定初始容量大小: (不建议使用:)

     |----Vector类:     底层数组:  该类已经被ArrayList取代。 
                                                           该类的实现:线程同步, 数据安全, 效率低。
                                                           
           |----  new Vector(); 创建一个空集合:  初始容量大小为10,  两倍扩展: 底层数组:    方法实现: 同步,数据安全,

                   效率低
           |----- new Vector(Collection<? extends E> c) 将一些其他的集合对象转换成Vector集合: 
                                                           
           |------elements(); 获得一个枚举: 元素的个数可以被列举:  
     
     |-----LinkedList  :类:  底层是链表结构:  主要是针对头元素和尾元素进行操作: 

其他 在思维导图中已经全部说明。

二 : 面试问题;
(1) Vector 和 ArrayList的区别:
共同点:
不同点:

(2) 给定一个ArrayList集合, 使用枚举遍历;

(3) String StringBuilder StringBuffer 三者之间的异同点:
StringBuilder: 线程异步, 数据不安全, 效率高。
StringBuffer: 线程同步,数据安全, 效率低:

(4) 面试问题: 模拟队列: LinkedList:

// 模拟栈结构:

三: LinkedList: 类:
API方法“:

添加头和尾:
addFirst(E e)
addLast(E e)
获得头和尾:
getFirst()
getLast();

移除头和尾部;
removeFirst()
removeLast()
如果集合当中没有操作的该元素,会抛出异常:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值