集合进阶

1、Collection

1.1 集合知识回顾

集合类的特点:提供了一种存储空间可变的存储模型,存储的数据容量可以随时发生改变
集合类主要用来存储和取出数据

1.2 集合类体系结构

集合:

—> Collection 单列 (接口)

—> List 单列存储数据可重复(接口) —> 张三,李四,张三
—> ArrayList (实现类)
—> LinkedList (实现类)
—> ….
—> Set 单列存储数据不可重复(接口) —> 张三,李四
—> HashSet (实现类)
—> TreeSet (实现类)
—> ….

—> Map 双列 (接口)

—> HashMap (实现类)
—> ….

1.3 Collection集合概述和使用

1.3.1 Collection集合概述

  1. 1. **是单列集合的顶层接口**,它表示一组对象,这些对象也被称为Collection的元素
  2. 1. JDK不提供此接口的任何直接实现,它提供更具体的子接口(如SetList)实现

1.3.2 创建Collection集合的对象

  1. 1. 多态的方式,子接口实现
  2. 1. 具体的实现类ArrayList

代码实现:
/创建Collection集合的对象
多态的方式
具体的实现类ArrayList
/
public class CollectionDemo01 {
_public static void main
(String[] args) {
/ 创建Collection集合的对象
Collection 是泛型表示该集合存储String类型
Collection集合无法直接实例,只能通过多态形式创建
/
Collection
<_String_> c = new ArrayList<_String_>()_;

  1. // 添加元素: boolean add(E e)<br /> c.add_(_"hello"_)_;<br /> c.add_(_"world"_)_;<br /> c.add_(_"java"_)_;
  2. // 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_>()_;

  1. // 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是接口,其中的泛型类型和集合一致
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]

  1. // 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*/
  2. // 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]

  1. // 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. 定义学生类
  2. 1. 创建Collection集合对象
  3. 1. 创建学生对象
  4. 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
<_Student_> iterator = c.iterator();
// 使用while循环判断迭代中是否具有下一个元素
while
(iterator.hasNext()){
// 使用迭代中的next()方法获取下一个元素
Student s = iterator.next
();
System._out
.println(_s.getName()+”,”+s.getAge()); } } }_