集合进阶
1、Collection
1.1 集合知识回顾
集合类的特点:提供了一种存储空间可变的存储模型,存储的数据容量可以随时发生改变
集合类主要用来存储和取出数据
1.2 集合类体系结构
集合:
—> Collection 单列 (接口)
—> List 单列存储数据可重复(接口) —> 张三,李四,张三
—> ArrayList (实现类)
—> LinkedList (实现类)
—> ….
—> Set 单列存储数据不可重复(接口) —> 张三,李四
—> HashSet (实现类)
—> TreeSet (实现类)
—> ….
—> Map 双列 (接口)
1.3 Collection集合概述和使用
1.3.1 Collection集合概述
1. **是单列集合的顶层接口**,它表示一组对象,这些对象也被称为Collection的元素
1. JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
1.3.2 创建Collection集合的对象
1. 多态的方式,子接口实现
1. 具体的实现类ArrayList
代码实现:
/创建Collection集合的对象
多态的方式
具体的实现类ArrayList/
public class CollectionDemo01 {
_public static void main(String[] args) {
/ 创建Collection集合的对象
Collection
Collection集合无法直接实例,只能通过多态形式创建
Collection<_String_> c = new ArrayList<_String_>()_;
// 添加元素: boolean add(E e)<br /> c.add_(_"hello"_)_;<br /> c.add_(_"world"_)_;<br /> c.add_(_"java"_)_;
// c是被new 出来的对象应该输出地址内存等<br /> // 但是输出String字符串表示Collection的String被重写<br /> System._out_.println_(_c_)_; _} }<br />
1.4 Collection集合常用方法
boolean add(E e) 添加元素
boolean remove(Object o) 从集合中移除指定的元素
void clear() 清空集合中的元素
boolean contains(Object o) 判断集合中是否存在指定的元素
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,集合中元素的个数
代码实现:
// Collection集合常用方法
public class CollectionDemo01 {
_public static void main(String[] args) {
// ctrl+b 点击方法可以下探源码, alt+7 可以查看源码包含的所有使用方法
Collection<_String_> c = new ArrayList<_String_>()_;
// boolean add(E e) 添加元素<br /> c.add_(_"hello"_)_;<br /> c.add_(_"hello"_)_;<br /> c.add_(_"hello"_)_; // [hello, hello, hello]<br /> System._out_.println_(_"---------------"_)_;<br /> // boolean remove(Object o) 从集合中移除指定的元素<br /> c.remove_(_"hello"_)_; // [hello, hello]<br /> System._out_.println_(_"---------------"_)_;<br /> // void clear() 清空集合中的元素<br /> // c.clear(); // []<br /> System._out_.println_(_"---------------"_)_;<br /> // boolean contains(Object o) 判断集合中是否存在指定的元素<br /> System._out_.println_(_c.contains_(_"hello"_))_; // true<br /> System._out_.println_(_"---------------"_)_;<br /> // boolean isEmpty() 判断集合是否为空<br /> System._out_.println_(_c.isEmpty_())_; // false<br /> // int size() 合的长度,集合中元素的个数<br /> System._out_.println_(_c.size_())_; // 2<br /> System._out_.println_(_"---------------"_)_;<br /> System._out_.println_(_c_)_; _} }_
1.5 Collection集合的遍历
Iterator:迭代器,集合的专用遍历方式
—> Interface Itrator
—> 迭代器是通过集合的iterator()得到的,所以它是依赖于集合而存在的
—> Iterator是接口,其中的泛型类型和集合一致
Iterator中的常用方法
—> E next(): 返回迭代中的下一个元素
—> boolean hasNext(): 判断迭代中是否具有下一个元素,即更多的元素。有则返回true
代码实现:
// Collection集合的遍历
public class CollectionDemo01 {
_public static void main(String[] args) {
Collection<_String_> c = new ArrayList<_String_>();
// boolean add(E e) 添加元素
c.add(“hello”);
c.add(“world”);
c.add(“java”)_; // [hello, world, java]
// Iterator:迭代器,集合的专用遍历方式<br /> // 实例化源码中的Itr的实现类的对象接收方法,iterator对象的泛型和集合一致<br /> Iterator_<_String_> _iterator = c.iterator_()_;<br /> // E next(): 返回迭代中的下一个元素<br /> /* System.out.println(iterator.next()); // hello<br /> System.out.println(iterator.next()); // world<br /> System.out.println(iterator.next()); // java<br /> System.out.println(iterator.next()); // 被请求的元素不存在:NoSuchElementException*/
// boolean hasNext(): 判断迭代中是否具有下一个元素,即更多的元素<br /> /* if(iterator.hasNext()){<br /> System.out.println(iterator.next());<br /> }<br /> if(iterator.hasNext()){<br /> System.out.println(iterator.next());<br /> }<br /> if(iterator.hasNext()){<br /> System.out.println(iterator.next());<br /> }*/<br /> // 使用while循环改进上述拍段迭代元素<br /> while _(_iterator.hasNext_()){<br /> _String s = iterator.next_()_;<br /> System._out_.println_(_s_)_; _} } }_
1.6 Collection集合的使用步骤
步骤1: 创建集合的使用对象
步骤2: 往集合中添加元素
步骤2.2: 创建元素
步骤2.3: 添加创建的元素到集合
步骤3:遍历集合
步骤3.1: 创建迭代器使用多态实例化对象
步骤3.2: 使用while循环迭代中的hasNext()方法判断是否具有下一个元素
步骤3.2: 使用迭代中的next()方法获取下一个元素
代码实现:
public class CollectionDemo01 {
_public static void main(String[] args) {
Collection<_String_> c = new ArrayList<_String_>();
// 创建元素
String s = “world”;
// boolean add(E e) 添加元素
c.add(“hello”);
// 添加创建的元素到集合
c.add(s);
c.add(“java”)_; // [hello, world, java]
// Iterator:迭代器,集合的专用遍历方式<br /> Iterator_<_String_> _iterator = c.iterator_()_;<br /> // 使用while循环判断迭代中是否具有下一个元素<br /> while _(_iterator.hasNext_()){<br /> _String s = iterator.next_()_;<br /> System._out_.println_(_s_)_; _} } }_
案例: Collection集合存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
泛型: 创建集合的时候泛型类型是学生对象不是字符串
思路:
1. 定义学生类
1. 创建Collection集合对象
1. 创建学生对象
1. 把学生添加到集合
代码实现:
public class CollectionStudent {
_public static void main(String[] args) {
// 创建Collection集合对象
Collection<_Student_> c = new ArrayList<_Student_>();
Student student = new Student(“李畅”,21);
Student student1 = new Student(“赵明”,22);
Student student2 = new Student(“唐明”,23);
c.add(student);
c.add(student1);
c.add(student2);
// Iterator迭代器的泛型类一定要与集合保持一致,集合的泛型类
Iterator
// 使用while循环判断迭代中是否具有下一个元素
while (iterator.hasNext()){
// 使用迭代中的next()方法获取下一个元素
Student s = iterator.next();
System._out.println(_s.getName()+”,”+s.getAge()); } } }_