黑马程序员全套Java教程_Java基础教程_集合进阶之Collection(二十四)
1.1 集合知识回顾
- 集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变
1.2 集合类体系结构
- 我们知道集合最主要的作用是用来存取数据的。
- 集合存储数据:
(1)单列数据通过Collection集合存储,Collection集合也被称为单列集合;双列数据通过Map集合实现,Map集合也被称为双列集合。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/85fe9478874561e10b94e5ac005ffda7.png)
(2)单列集合中数据存储:List集合存储元素是可重复的,Set集合存储元素不可以重复。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/791ed4ffb5caa0eadeaeade117c60078.png)
(3)但是这些集合都只是接口,并不能直接创建对象并使用,所以下面还有具体的实现类。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/81996b019dda9d4d3df502c2c47a2e56.png)
1.3 Collection集合概述和使用
- Collection集合概述:
(1)是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素;
(2)JDK不提供此接口的任何直接实现,他提供更具体的子接口(如Set和List)实现。 - 创建Collection集合的对象:
(1)多态的方式;
(2)具体的实现类ArrayList。
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("hello");
c.add("good");
c.add("guy");
System.out.println(c);
}
1.4 Collection集合的常用方法
方法名 | 说明 |
---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断结合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
public class CollectionDemo {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("hello");
c.add("good");
c.add("guy");
c.add("hello");
System.out.println(c);
c.remove("hello");
System.out.println(c);
System.out.println(c.size());
c.clear();
System.out.println(c);
System.out.println(c.isEmpty());
System.out.println(c.size());
c.add("hello");
c.add("good");
c.add("guy");
System.out.println(c.size());
System.out.println(c.contains("guy"));
System.out.println(c.isEmpty());
System.out.println(c.size());
}
1.5 Collection结合的遍历
- Iterator:迭代器,集合的专用遍历方式。
(1)Iterator iterator():返回此集合中元素的迭代器,通过集合的Iterator()方法得到;
(2)迭代器是通过集合的Iterator方法得到的,所以我们说它是依赖于集合而存在的(ArrayList的内部类Itr实现了Iterator接口)。 - Iterator中的常用方法:
(1)E next():返回迭代器中的下一个元素。
(2)boolean hasNext():如果迭代器具有更多的元素,则返回true。
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("hello");
c.add("good");
c.add("guy");
Iterator<String> it = c.iterator();
while (it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
1.6 集合使用步骤
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/51131a7013a9ffc6deb1d6dd69c597e1.png)
案例:Collection集合存储学生对象并遍历
- 需求:创建一个学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合。
public class Student {
private int age;
private String name;
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
public Student(){}
public Student(int age, String name) {
this.age = age;
this.name = name;
}
........................略...............................
}
public class CollectionDemo {
public static void main(String[] args) {
Collection<Student> c = new ArrayList<>();
c.add(new Student(1,"aaa"));
c.add(new Student(33,"bbb"));
Student s = new Student();
s.setAge(18);
s.setName("hhh");
c.add(s);
Iterator<Student> it = c.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}