一.4集合
1Collection集合
1.1集合概述
.集合:集合是java中提供的一种容器,可以用来存储多个数据。
集合和数组的区别
●数组的长度是固定的。集合的长度是可变的。
. 数组中存储的是同一 类型的元素, 可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。
学习集合的目标:
1.会使用集合存储数据
2.会遍历集合,把数据取出来
3.掌握每种集合的特性
集合框架的学习方式:
1.学习顶层:学习顶层接口/抽象类中共性的方法所有的子类都可以使用
2.使用底层:底层不是接口就是抽象类无法创建对象使用需要使用底层的子类创建对象使用
1.2集合框架 (继承子类共性抽取形成父类(接口))
框架:(图库JAVA)
Collection接口-->List接口,Set接口。
List接口-->Vector集合,Array List集合,Linked List集合。
Set接口-->TreeSet集合,HashSet集合。
HashSet集合-->Linked Hash Set集合。(继承关系)
-
Collection接口
定义的是所有单列集合中共性的方法所有的单列集合都可以使用共性的方法没有带索引的方法
-
List接口
1.有序的集合(存储和取出元素顺序相同)
2.允许存储重复的元素
3.有索引,可以使用普通的for循环遍历
-
Set接口
1不允许存储重复元素
2.没有索引不能使用普通的for循环遍历
3.TreeSet集合,HashSet集合 无序(存储和取出元素的顺序不一样)
Linked Hash Set集合 有序
1.3Collection集合常用功能
ava.util.Collection接口 所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法任意的单列集合都可以使用Collection接口中的方法 共性的方法: public boolean add(E e):把给定的对象添加到当前集合中。(返回值为Boolean值,一般返回true,可以不用接收) public void clear() :清空集合中所有的元素。([],只是清空元素,集合还在) public boolean remove(E e):把给定的对象在当前集合中删除。(删除集合里没有的,集合还是原来的集合) public boolean contains(E e):判断当前集合中是否包含给定的对象。 public boolean isEmpty(): 判断当前集合是否为空。 public int size(): 返回集合中元素的个数。 public 0bject[] toArray(): 把集合中的元素,存储到数组中。
1.4Iterator接口介绍
java.util. Iterator接口:迭代器(对集合进行遍历) 有两个常用的方法 boolean hasNext() 如果仍有元素可以迭代,则返回true。 判断集合中还有没有下一个元素,有就返回true,没有就返回false E next()返回迭代的下一个元素。 取出集合中的下一个元素 Iterator迭代器,是一个接口, 我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象 Iterator<E> iterator() 返回在此collection 的元素上进行迭代的迭代器。
1.5Iterator接口代码实现
迭代器的使用步骤(重点): 1.使用集合中的方法iterator( )获取迭代器的实现类对象,使用Iterator接口接收(多态) 使用:Iterator<String> it = coll.iterator();(先创建集合对象coll) 2.使用Iterator接口中的方法hasNext判断还有没有下一个元素 使用: boolean a=it.hasNext(); System.out.println(a); 3.使用Iterator接口中的方法next取出集合中的下一个元素 //NoSuchElementException,在没有元素的情况下取出,会报错。 使用:String b=it.next(); System.out.println(b); 输出每一个元素需要重复2,3的过程: a=it.hasNext(); System.out.println(a); b=it.next(); System.out.println(b); 发现使用迭代器取出集合中元素的代码,是一个重复的过程所以我们可以使用循环优化 不知道集合中有多少元素,使用while循环 循环结束的条件, hasNext方法返回folse while (it.hasNext()){ System.out.println(it.next()); } System.out.println("用For的话麻烦=================="); for(Iterator<String> it2 = coll.iterator() ;it2.hasNext();){ System.out.println(it2.next()); }
1.6迭代器实现原理(图库JAVA)
coll.iterator();负责获取选代疑的实现类对象,并且会把指针(索引)指向集合的-1索引
it.hastlext());判断集合中还有没有下一 个元素
it.next();1.取出下一个元索
2.会把指针内后移动一位
1.7增强for循环
増強for循坏:底居使用的也是迭代器,使用for循珎的格式筒化了迭代器的帯写 是JDK1.5之后出現的新特性 Collection<Eextends Iterable<E>:所有的単列集合都可以使用増強for public interface Iterable<T>实现这个接口允许対象成为 "foreach" 语句的目标。 増強for循坏:用来遍万集合和数組 格式: for(集合/数組的数据尖型変量名:集合名/数俎名){ sout(変量名); }