集合
集合:集合是java中提供的一种容器,可以用来存储多个数据。
特点: 长度不固定,还可以存储不同的数据(但是一般都用同一类型)
集合和数组既然都是容器,它们有啥区别呢?
-
数组的长度是固定的。集合的长度是可变的。
-
数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。
集合的体系
Collection 常用的方法
基本功能
-
public boolean add(E e)
: 把给定的对象添加到当前集合中 。 -
public void clear()
:清空集合中所有的元素。 -
public boolean remove(E e)
: 把给定的对象在当前集合中删除。 -
public boolean contains(E e)
: 判断当前集合中是否包含给定的对象。 -
public boolean isEmpty()
: 判断当前集合是否为空。 -
public int size()
: 返回集合中元素的个数。 -
public Object[] toArray()
: 把集合中的元素,存储到数组中。
高级功能
boolean addAll(Collection<? extends E> c) 添加一个集合到当前集合 boolean removeAll(Collection<?> c) 移除一个集合元素
boolean retainAll(Collection<?> c) 两个集合都有的元素,思考元素去哪里?boolean又是什么意思? boolean containsAll(Collection<?> c) 判断当前集合是否包含指定集合的元素 一个还是所有?
集合的遍历
public static void main(String[] args) {Collection c = new ArrayList();c.add("hello");c.add("java");c.add("collection");//遍历集合Object[] arr = c.toArray();//String -> Objectfor(int i=0;i<arr.length;i++){String s = (String)arr[i];System.out.println(s);}}
terator 迭代器
迭代器的介绍
专门为集合提供遍历的一种技术
迭代器的怎么使用
Collection c = new ArrayList();Student student = new Student("张三",18);Student student2 = new Student("李四",28);Student student3 = new Student("王老吉",38);c.add(student);c.add(student2);c.add(student3);Iterator iterator = c.iterator();while (iterator.hasNext()){Student s = (Student) iterator.next();System.out.println(s);}
迭代器的原理
数据结构
数据结构的有什么用?
数据结构:研究数据的存储
现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数组的存储,我们还能方便地查询到所需要的数据吗?而算法,在这么多的数据中如何做到最快的插入,查找,删除,也是在追求更快。
我们java是面向对象的语言,就好似自动档轿车,C语言好似手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A点 开到 B点,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也不能造车。当然了,数据结构内容比较多,细细的学起来也是相对费功夫的,不可能达到一蹴而就。我们将常见的数据结构:堆栈、队列、数组、链表和红黑树 这几种给大家介绍一下,作为数据结构的入门,了解一下它们的特点即可。
常见的数据结构
数据存储的常用结构有:栈、队列、数组、链表和红黑树。我们分别来了解一下:
栈,队列
数组与链表
数组: 利于查询 ,不利于增删改
链表:不利于查询 ,利于增删改
(根据需求,选择对应的数据形式,进行存储)
List 接口的方法
void add(int index, E element)
Object get(int index)
ListIterator listIterator() 返回列表中的列表迭代器(按适当的顺序)。
Object set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素。
ListIterator listIterator() : 此方法重要;不但可以正向还可以反向,还可以进行添加和修改
ConcurrentModificationException 并发修改异常
在迭代器在迭代元素时,用集合去操作,出现上现的异常
解决方法是:
迭代器在进行迭代元素时,就用迭代器去修改(包括添加)
集合遍历元素时,就用集合去修改
List 子类特点
ArrayList类
底层数组 : 查询快,增删改慢
线程不安全: 不安全,效率高
Vecktor类
底层数组 : 查询快,增删改慢
线程安全: 安全,效率低
LinkedList类
底层链表 : 查询慢,增删改快
线程不安全: 不安全,效率高