A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Honne 初级黑马   /  2019-8-30 16:40  /  1194 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

<集合 List接口  Set接口  (List)迭代器  增强for 并发异常原理 红黑树>

  Iterable(集合的超级父类)
   |
Collection
/                                        \
List接口                                       Set接口
Collection接口特点:
定义是所有单列集合中共性的方法
所有的单列集合都可以使用共性的方法
没有带索引的方法

遍历Collection接口(迭代器):
Collection<String> list = new ArrayList();
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String s = it.next();
    System.out.println(s);
}
---------------------------------------------

List接口
/                  |                   \
Vector集合/ArrayList集合/LinkedList集合
List接口特点:
1.有序的集合(储存和去处元素顺序相同)
2.允许储存重复的元素
3.有索引,包含了一些带索引的方法可以使用普通的for循环遍历
---------------------------------------------
Set接口
           /                 \                  
TreeSet集合/HashSet集合        // TreeSet集合和HashSet集合是无序的集合(存储和取出元素的顺序可能不一致)
\
  LinkedHashSet集合    // LinkedHashSet是有序集合
Set接口特点:
1.不允许储存重复元素
2.没有索引(不能使用for循环遍历)

----------------------------------------------Collection
是单列集合的顶层接口,它表示一组对象,这些对象也成为Collection元素
JDK不提供此接口的任何实现,它提供更具体的接口(如Set和List)实现

创建Collection集合的对象
多态的方式
具体的实现类ArrayList
// 接口指向实现类
Collection<String> c = new ArrayList<String>();


常用方法:
public boolean add(E e)   
添加元素,返回一个布尔值,添加的动作成功则返回true,否则返回false
-----------
public boolean remove(Object o)   
移除指定元素,返回一个布尔值,移除的动作成功则返回true,否则返回false
-----------
public void clear()   
清空集合当中的元素
-----------
public boolean contains(Object o)
判断集合当中是否存在某元素,返回一个布尔值
-----------
public boolean isEmpty()
判断集合是否为空
-----------
public int size()
集合的长度,也就是集合中元素的个数
-----------
public Object[] toArray();
把集合当中的元素,储存到数组当中
-----------------------------------------------------------------迭代器
iterator
Listiterator

-----------------------------------------------------------------List接口
java.util.List接口 extends Collection接口
List接口特点:
1.有序的集合(储存和去处元素顺序相同)
2.允许储存重复的元素
3.有索引,包含了一些带索引的方法可以使用普通的for循环遍历

List接口中带索引的方法(特有)
public void add(int index, E element);
将指定的元素,添加到集合的指定位置上
-----------
public E get(int index);
返回集合中指定位置的元素
-----------
public E remove(int index);
移除列表中指定位置的元素,返回的是被移除的元素
-----------
public E set(int index, E element);
用指定元素替换集合中指定位置的元素,返回值为更新前的元素


---------------------------------------------------------数据结构

先进的后出
-----------
队列
先进的先出
-----------
数组
特点:查询快,增删慢
查询快 : 因为数组的地址是连续的,通过数组的首地址可以找到数组,通过数组的索引可以快速查找某一个元素,所以
增删慢 : 数组的长度是固定的,我们要增加/删除一个元素,必须创建一个新数组并把原数组的数据复制过来,原数组会被回收删除
-----------
链表结构
特点:查询慢,增删快
查询慢 : 链表中地址不是连续的,每次查询元素,都必须从头开始查询
增删快 : 链表结构,增加/删除一个元素,对链表的整体结构没有影响,所以增删快
-----------
二叉树
树根
/                \
    左子树      右子树
/              \
树叶           树叶

排序树/查找树(在二叉树的基础上,元素左子树小,右子树大




-------------------------------------------ArrayList接口的数据结构
ArrayList  底层是一个数组结构  查询快  增删慢  
注意: 此实现不是同步的(多线程)

-------------------------------------------LinkedList接口的数据结构
LinkedList  底层是一个接口的链接列表实现  查询慢  增删快
里面包含了大量的操作首位元素的方法
注意: 1.此实现不是同步的(多线程)
2.使用LinkedList集合特有的方法不能使用多态
常用方法
public void addFirst(E e);   相当于push
在该列表开头插入指定的元素
-----------
public void addLast(E e);   相当于add
将指定的元素追加到此列表的末尾
-----------
public E getFirst();
返回此列表中的第一个元素
备注:如果列表中没有元素,则报出NoSuchElementException异常
-----------
public E getLast();
返回此列表中的最后一个元素
备注:如果列表中没有元素,则报出NoSuchElementException异常
-----------
public E removeFirst();    相当于pop
从此列表中删除并返回第一个元素
-----------
public E removeLast();   相当于remove
从此列表中删除并返回最后一个元素
-----------
public E pop();
从此列表中所表示的堆栈处弹出一个元素
-----------
public void push(E e);
将元素推入此列表所表示的堆栈, 此方法等效addFirst
-----------
public boolean isEmpty();
如果列表不包含任何元素,则返回true



-------------------------------------------------------增强for
格式:
for(集合/数组的数据类型 变量名 : 集合名/数组名) {
sout(变量名)
}

-------------------------------------------------------并发异常
规则:在使用iterator的时候修改集合就会抛出并发异常

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马