14天-01-集合框架
集合类出现:面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
数组与集合类同是容器,有何不同?
数组长度是固定的,集合长度是可变的;数组中只可以存储基本数据类型,集合可以存储对象。

迭代器其实就是集合的取出元素的方式,用于循环遍历

  集合迭代器Iterator:
在集合中,把取出方式定义在集合的内部,这样取出方式就可以直接访问集合内部的元素。那么取出方式就被定义成了内部类。而每一个容器的数据结构不同,所以取出的动作细节也不一样,但是都有共性内容,判断和取出,那么就将这些共性抽取,这个就是Iterator,对外提供iterator();方法,hasNext();判断是否还有元素,next();获取下一个元素,remove();移除此元素。

  Collection 接口    add,remove,contains,clear,iterator

Java基础知识_毕向东_Java基础视频教程笔记(14-18集合框架)

Java基础知识_毕向东_Java基础视频教程笔记(14-18集合框架)

List: 元素是有序的,元素可以重复,因为该集合体系有索引。
  ArrayList:底层使用的是数组数据结构。特点:查询、修改操作很快,增加、删除慢。线程非同步
  LinkList:底层使用的是链表数据结构。特点:增加、删除、修改操作快,查询慢
  Vector:底层使用的是数组数据结构。特点:线程同步,被ArrayList代替了
Set: 元素是无序的(存入和取出的顺序不一致),元素不可以重复。
  HashSet:底层使用的是哈希表数据结构。线程非同步。保证元素唯一性的原理:判断元素的hashCode值是否相同,如果相同,还会继续判断元素的equals方法。
  TreeSet:底层使用的是二叉树数据结构。保证元素唯一性的原理:比较compareTo方法return -1,0,1。可以对Set集合中的元素排序。

  List:特有方法,凡是可以操作角标的方法都是该体系特有的方法。
增   add(index,element);   addAll(index,Collection);
删   remove(index);
改   set(index,element);
查   get(index); subList(from,to);   //包括开始,不包括结束元素 listIterator();

Listiterator:该接口只能通过List集合的listIterator()方法获取。
List集合特有的迭代器,ListIterator是Iterator的子接口。
  在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModifyException异常。所以,在迭代器时,只能用迭代器的删取操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作。如果想要其他操作如添加,修改等,就需使用其子接口:ListIterator

  Vector:
枚举就是Vector特有的取出方式,其实枚举和迭代器是一样的,因为枚举的名称以及方法名称都过长,所以被迭代器取代了。Enumeration<E> elements()获取Vector枚举元素类似Iterator,hasMoreElements();//判断是否有下一个元素    nextElement();//获取下一个元素

  LinkedList:
LinkedList特有方法:
addFirst();    addLast(); //添加元素
getFirst();    getLast(); //获取元素,不删除元素
removeFirst();   removeLast(); //删除元素,并获取元素。如果集合中没有元素,会出现NoSuchElementException
在JDK1.6出现了替代方法:
offerFirst();   offerLast(); //添加元素
peekFirst();   peekLast(); //获取元素,不删除元素。如果集合中没有元素,会返回null
pollFirst();   pollLast(); //删除元素,并获取元素。如果集合中没有元素,会返回null

List集合判断元素是否相同,依据元素的equals方法。

 1 /*
 2 使用LinkedList模拟一个堆栈和队列数据结构
 3 堆栈:先进后出。队列:先进先出。
 4 */
 5 //队列:先进先出
 6 class Queue
 7 {
 8     private LinkedList link;
 9 
10     Queue()
11     {
12         link = new LinkedList();
13     }
14 
15     public void add(Object object)
16     {
17         link.addFirst(object);
18     }
19 
20     public Object get()
21     {
22         return link.removeLast();
23     }
24 
25     public boolean isEmpty()
26     {
27         return link.isEmpty();
28     }
29 }
30 //堆栈:先进后出
31 class Stack
32 {
33     private LinkedList link;
34 
35     Stack()
36     {
37         link = new LinkedList();
38     }
39 
40     public void add(Object object)
41     {
42         link.addFirst(object);
43     }
44 
45     public Object get()
46     {
47         return link.removeFirst();
48     }
49 
50     public boolean isEmpty()
51     {
52         return link.isEmpty();
53     }
54 }
LinkedList模拟一个堆栈和队列数据结构

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-21
  • 2021-05-24
  • 2021-07-17
  • 2021-07-25
  • 2021-11-29
  • 2021-06-21
  • 2022-12-23
相关资源
相似解决方案