一.Collection 集合
1.集合:集合是一种容器,可以用来储存多个数据。
集合和数组的区别:数组(存储同一类型元素,基本数据类型)长度是固定的,集合(储存对象)的长度是可变的。
2.集合框架体系
List接口特性:1 有序的集合(存储元素和取出远胜于的顺序一致)
2. 允许重复反复的元素
3.有索引,包含一些带索引的方法
Set借口: 1 不允许重复元素 2 没有索引,不包含带索引的方法
Collectio接口:定义的是所有单列集合中共性的方法,所有单列集合都可以使用
框架的使用:学习顶层,底层子类创建对象使用
3.Collection接口 常用方法
public boolean add(E e) : 把给定的对象添加到当前集合中 。
public void clear() :清空集合中所有的元素。(删除所有元素,保留集合)
public boolean remove(E e) : 把给定的对象在当前集合中删除。(存在元素则删除该元素,返回true,不存在元素则删除失败,返回false,存在重复元素则只会删除第一个)
public boolean contains(E e) : 判断当前集合中是否包含给定的 (包含则ture)
public boolean isEmpty() : 判断当前集合是否为空。(为空则ture)
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组
二.Iterator迭代器
1.常用方法 boolean hasNext() 判断是否达到末尾
E next() 取出集合
2.迭代器的使用步骤;
1.使用集合中的方法iterator(),获取迭代器的实现类对象,使用Iterator接口就收实现类。
2.使用Iterator接口中的方法hasNext判断是否达到集合末尾
3.使用Iterator接口中的方法next取出集合中数值
使用方法:使用while循环(推荐)
Whie(i.hasNext()){
System.out.println( i.next())
}
使用增强for循环for(String i :coll){}
3. 迭代器的并发修改异常:
在使用迭代器的过程中,修改了集合的长度(添加元素,删除元素),就会抛出并 发修改异常
并发:两件事情同时发生(1.迭代,2.修改集合长度)
并发修改异常的解决方法:1.在迭代的过程中,不对集合的长度进行修改 2.使用ListIterator接口中自有的add/remove方法
三.泛型
1.泛型:是一种未知的数据类型,放我们不知道使用什么类型的时候,可以使用泛型。
泛型也可以看出是一个变量,用来接收数据类型。
E e:Element 元素
T t:Type 类型
ArrayList集合在定义的时候,不知道集合中都会存储什么类型的数据,所以类型使用泛型。
3.创建对象使用泛型
好处:1.避免了类型转的麻烦,储存数据是什么类型,取出数据就是什么类型。
2.把运行期异常,提升到了编译期
弊端:泛型是什么类型,只能储存什么类型。
4. 泛型的使用
5. 泛型分通配符:
?:代表任意的数据类型
不能创建对象使用,只能作为方法的参数使用
储集合按照其结果可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map.
Collection:单列集合的根接口,用于储存一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet
一 数据结构:
特点:
1.栈:先进后出 (类似于弹夹子弹顺序)
2.队列:先进先出 (排队)
3.数组:查询快:数组的地址是连续的,我们通过数组的首地址亏找到数组,动过数 组的索引可以快速查找某一个元素。
增删慢:数组的长度是固定的,我们想要增删一个元素,必须创建一个新数组, 把源数组的数据复制过来。
4.链表:增删快:链表结构,增删一个元素,对链表的整体结构没有影响
查询慢:链表中的地址不是连续的,每次查询元素,都必须从头开始查询。
单向链表,双向链表。
5.红黑树:二叉树,分支数量不能超过二。特点:趋近于平衡树,查询速度非常的快, 查询叶子及诶单最大次数和最小次数不能超过2倍。
排序树:元素有大小顺序,做子树小,右子树大
平衡树:左右子树相等
二.List集合
特点:1.有序的集合,存储元素和取出元素的顺序是一致的
2.有索引,包含了一些带索引的方法
3.允许存储重复的元素
List特有的方法: add(添加元素)get(遍历获取元素) set(替换元素)remove(移除 特定元素)
三.List的子类
1.ArrayList 集合
使用复制的方式来处理数组的增长,扩容方式为扩容至当前1.5倍,如若不够则扩充至当前需要的数量(grow方法)
2. LinkedList 集合
特点:1.底层是一个链表结构:查询慢,增删快
2.里边包含了大量操作收尾元素的方法
注意:使用LinkedList特有的方法,不能使用多态
方法:public void addFirst(E e) :将指定元素插入此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第一个元素。
public E getLast() :返回此列表的最后一个元素。
public E removeFirst() :移除并返回此列表的第一个元素。
public E removeLast() :移除并返回此列表的最后一个元素。
public E pop() :从此列表所表示的堆栈处弹出一个元素。
public void push(E e) :将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。
3.Vector集合
四.Set接口
⑴.Set接口的特点 :1.不允许储存重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
⑵.HashSet特点:1.不允许储存重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
3.是一个无序的集合,存储元素和取出元素的顺序有可能不一致。
4.底层是一个哈希表结构(查询的速度非常快)
特点原理: 无序:按照哈希表排序。
去重:Set集合首先会调用HashCode方法判断哈希值是否相同和equals方法判断该元素的内容是否相同。
Set集合保存元素唯一:必须重写HashCode方法和equals方法
⑶LinkedHashSet集合的特点:底层是一个哈希表+链表;多一条链表,保证元素有序
⑷可变参数
使用前提:方法的参数列表数据类型以及确定,但是参数的个数不确定,就可以使用可变参数。
使用格式:定义方法时使用
修饰符 返回值类型 方法名(数据类型...变量名) { }
Public static int add(int ... arr){ }
可变参数底层就是一个数组,根骨传递参数个数不同,会创建不同长度的数组,来存储这些参数传递的参数个数,可以是0个,多个
五.Collections 类
一.Collection 集合
1.集合:集合是一种容器,可以用来储存多个数据。
集合和数组的区别:数组(存储同一类型元素,基本数据类型)长度是固定的,集合(储存对象)的长度是可变的。
2.集合框架体系
List接口特性:1 有序的集合(存储元素和取出远胜于的顺序一致)
2. 允许重复反复的元素
3.有索引,包含一些带索引的方法
Set借口: 1 不允许重复元素 2 没有索引,不包含带索引的方法
Collectio接口:定义的是所有单列集合中共性的方法,所有单列集合都可以使用
框架的使用:学习顶层,底层子类创建对象使用
3.Collection接口 常用方法
public boolean add(E e) : 把给定的对象添加到当前集合中 。
public void clear() :清空集合中所有的元素。(删除所有元素,保留集合)
public boolean remove(E e) : 把给定的对象在当前集合中删除。(存在元素则删除该元素,返回true,不存在元素则删除失败,返回false,存在重复元素则只会删除第一个)
public boolean contains(E e) : 判断当前集合中是否包含给定的 (包含则ture)
public boolean isEmpty() : 判断当前集合是否为空。(为空则ture)
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组
二.Iterator迭代器
1.常用方法 boolean hasNext() 判断是否达到末尾
E next() 取出集合
2.迭代器的使用步骤;
1.使用集合中的方法iterator(),获取迭代器的实现类对象,使用Iterator接口就收实现类。
2.使用Iterator接口中的方法hasNext判断是否达到集合末尾
3.使用Iterator接口中的方法next取出集合中数值
使用方法:使用while循环(推荐)
Whie(i.hasNext()){
System.out.println( i.next())
}
使用增强for循环for(String i :coll){}
3. 迭代器的并发修改异常:
在使用迭代器的过程中,修改了集合的长度(添加元素,删除元素),就会抛出并 发修改异常
并发:两件事情同时发生(1.迭代,2.修改集合长度)
并发修改异常的解决方法:1.在迭代的过程中,不对集合的长度进行修改 2.使用ListIterator接口中自有的add/remove方法
三.泛型
1.泛型:是一种未知的数据类型,放我们不知道使用什么类型的时候,可以使用泛型。
泛型也可以看出是一个变量,用来接收数据类型。
E e:Element 元素
T t:Type 类型
ArrayList集合在定义的时候,不知道集合中都会存储什么类型的数据,所以类型使用泛型。
3.创建对象使用泛型
好处:1.避免了类型转的麻烦,储存数据是什么类型,取出数据就是什么类型。
2.把运行期异常,提升到了编译期
弊端:泛型是什么类型,只能储存什么类型。
4. 泛型的使用
5. 泛型分通配符:
?:代表任意的数据类型
不能创建对象使用,只能作为方法的参数使用
储集合按照其结果可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map.
Collection:单列集合的根接口,用于储存一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet一.Collection 集合
1.集合:集合是一种容器,可以用来储存多个数据。
集合和数组的区别:数组(存储同一类型元素,基本数据类型)长度是固定的,集合(储存对象)的长度是可变的。
2.集合框架体系
List接口特性:1 有序的集合(存储元素和取出远胜于的顺序一致)
2. 允许重复反复的元素
3.有索引,包含一些带索引的方法
Set借口: 1 不允许重复元素 2 没有索引,不包含带索引的方法
Collectio接口:定义的是所有单列集合中共性的方法,所有单列集合都可以使用
框架的使用:学习顶层,底层子类创建对象使用
3.Collection接口 常用方法
public boolean add(E e) : 把给定的对象添加到当前集合中 。
public void clear() :清空集合中所有的元素。(删除所有元素,保留集合)
public boolean remove(E e) : 把给定的对象在当前集合中删除。(存在元素则删除该元素,返回true,不存在元素则删除失败,返回false,存在重复元素则只会删除第一个)
public boolean contains(E e) : 判断当前集合中是否包含给定的 (包含则ture)
public boolean isEmpty() : 判断当前集合是否为空。(为空则ture)
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组
二.Iterator迭代器
1.常用方法 boolean hasNext() 判断是否达到末尾
E next() 取出集合
2.迭代器的使用步骤;
1.使用集合中的方法iterator(),获取迭代器的实现类对象,使用Iterator接口就收实现类。
2.使用Iterator接口中的方法hasNext判断是否达到集合末尾
3.使用Iterator接口中的方法next取出集合中数值
使用方法:使用while循环(推荐)
Whie(i.hasNext()){
System.out.println( i.next())
}
使用增强for循环for(String i :coll){}
3. 迭代器的并发修改异常:
在使用迭代器的过程中,修改了集合的长度(添加元素,删除元素),就会抛出并 发修改异常
并发:两件事情同时发生(1.迭代,2.修改集合长度)
并发修改异常的解决方法:1.在迭代的过程中,不对集合的长度进行修改 2.使用ListIterator接口中自有的add/remove方法
三.泛型
1.泛型:是一种未知的数据类型,放我们不知道使用什么类型的时候,可以使用泛型。
泛型也可以看出是一个变量,用来接收数据类型。
E e:Element 元素
T t:Type 类型
ArrayList集合在定义的时候,不知道集合中都会存储什么类型的数据,所以类型使用泛型。
3.创建对象使用泛型
好处:1.避免了类型转的麻烦,储存数据是什么类型,取出数据就是什么类型。
2.把运行期异常,提升到了编译期
弊端:泛型是什么类型,只能储存什么类型。
4. 泛型的使用
5. 泛型分通配符:
?:代表任意的数据类型
不能创建对象使用,只能作为方法的参数使用
储集合按照其结果可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map.
Collection:单列集合的根接口,用于储存一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet常用方法:public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。
public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。
1.集合:集合是一种容器,可以用来储存多个数据。
集合和数组的区别:数组(存储同一类型元素,基本数据类型)长度是固定的,集合(储存对象)的长度是可变的。
2.集合框架体系
List接口特性:1 有序的集合(存储元素和取出远胜于的顺序一致)
2. 允许重复反复的元素
3.有索引,包含一些带索引的方法
Set借口: 1 不允许重复元素 2 没有索引,不包含带索引的方法
Collectio接口:定义的是所有单列集合中共性的方法,所有单列集合都可以使用
框架的使用:学习顶层,底层子类创建对象使用
3.Collection接口 常用方法
public boolean add(E e) : 把给定的对象添加到当前集合中 。
public void clear() :清空集合中所有的元素。(删除所有元素,保留集合)
public boolean remove(E e) : 把给定的对象在当前集合中删除。(存在元素则删除该元素,返回true,不存在元素则删除失败,返回false,存在重复元素则只会删除第一个)
public boolean contains(E e) : 判断当前集合中是否包含给定的 (包含则ture)
public boolean isEmpty() : 判断当前集合是否为空。(为空则ture)
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组
二.Iterator迭代器
1.常用方法 boolean hasNext() 判断是否达到末尾
E next() 取出集合
2.迭代器的使用步骤;
1.使用集合中的方法iterator(),获取迭代器的实现类对象,使用Iterator接口就收实现类。
2.使用Iterator接口中的方法hasNext判断是否达到集合末尾
3.使用Iterator接口中的方法next取出集合中数值
使用方法:使用while循环(推荐)
Whie(i.hasNext()){
System.out.println( i.next())
}
使用增强for循环for(String i :coll){}
3. 迭代器的并发修改异常:
在使用迭代器的过程中,修改了集合的长度(添加元素,删除元素),就会抛出并 发修改异常
并发:两件事情同时发生(1.迭代,2.修改集合长度)
并发修改异常的解决方法:1.在迭代的过程中,不对集合的长度进行修改 2.使用ListIterator接口中自有的add/remove方法
三.泛型
1.泛型:是一种未知的数据类型,放我们不知道使用什么类型的时候,可以使用泛型。
泛型也可以看出是一个变量,用来接收数据类型。
E e:Element 元素
T t:Type 类型
ArrayList集合在定义的时候,不知道集合中都会存储什么类型的数据,所以类型使用泛型。
3.创建对象使用泛型
好处:1.避免了类型转的麻烦,储存数据是什么类型,取出数据就是什么类型。
2.把运行期异常,提升到了编译期
弊端:泛型是什么类型,只能储存什么类型。
4. 泛型的使用
5. 泛型分通配符:
?:代表任意的数据类型
不能创建对象使用,只能作为方法的参数使用
储集合按照其结果可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map.
Collection:单列集合的根接口,用于储存一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet。
一 数据结构:
特点:
1.栈:先进后出 (类似于弹夹子弹顺序)
2.队列:先进先出 (排队)
3.数组:查询快:数组的地址是连续的,我们通过数组的首地址亏找到数组,动过数 组的索引可以快速查找某一个元素。
增删慢:数组的长度是固定的,我们想要增删一个元素,必须创建一个新数组, 把源数组的数据复制过来。
4.链表:增删快:链表结构,增删一个元素,对链表的整体结构没有影响
查询慢:链表中的地址不是连续的,每次查询元素,都必须从头开始查询。
单向链表,双向链表。
5.红黑树:二叉树,分支数量不能超过二。特点:趋近于平衡树,查询速度非常的快, 查询叶子及诶单最大次数和最小次数不能超过2倍。
排序树:元素有大小顺序,做子树小,右子树大
平衡树:左右子树相等
二.List集合
特点:1.有序的集合,存储元素和取出元素的顺序是一致的
2.有索引,包含了一些带索引的方法
3.允许存储重复的元素
List特有的方法: add(添加元素)get(遍历获取元素) set(替换元素)remove(移除 特定元素)
三.List的子类
1.ArrayList 集合
使用复制的方式来处理数组的增长,扩容方式为扩容至当前1.5倍,如若不够则扩充至当前需要的数量(grow方法)
2. LinkedList 集合
特点:1.底层是一个链表结构:查询慢,增删快
2.里边包含了大量操作收尾元素的方法
注意:使用LinkedList特有的方法,不能使用多态
方法:public void addFirst(E e) :将指定元素插入此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第一个元素。
public E getLast() :返回此列表的最后一个元素。
public E removeFirst() :移除并返回此列表的第一个元素。
public E removeLast() :移除并返回此列表的最后一个元素。
public E pop() :从此列表所表示的堆栈处弹出一个元素。
public void push(E e) :将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。
3.Vector集合
四.Set接口
⑴.Set接口的特点 :1.不允许储存重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
⑵.HashSet特点:1.不允许储存重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
3.是一个无序的集合,存储元素和取出元素的顺序有可能不一致。
4.底层是一个哈希表结构(查询的速度非常快)
特点原理: 无序:按照哈希表排序。
去重:Set集合首先会调用HashCode方法判断哈希值是否相同和equals方法判断该元素的内容是否相同。
Set集合保存元素唯一:必须重写HashCode方法和equals方法
⑶LinkedHashSet集合的特点:底层是一个哈希表+链表;多一条链表,保证元素有序
⑷可变参数
使用前提:方法的参数列表数据类型以及确定,但是参数的个数不确定,就可以使用可变参数。
使用格式:定义方法时使用
修饰符 返回值类型 方法名(数据类型...变量名) { }
Public static int add(int ... arr){ }
可变参数底层就是一个数组,根骨传递参数个数不同,会创建不同长度的数组,来存储这些参数传递的参数个数,可以是0个,多个
五.Collections 类
常用方法:public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。
public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。 |
|