集合的概述
集合:是一个大小可变的容器。
集合与数组的区别:
数组的长度是定义出来就固定的,数组的存储的数据类型也固定了。
集合的大小可变,可以存储任意类型的数据。
容器中的数据也称为元素。
开发中:集合用的更多。原因是集合的大小可变,开发中的数据通常是变化的。
Java中集合的代表是Collection。
Java中集合的体系结构:
Collection体系集合的特点:
Set系列集合的特点:添加的元素是无序,不重复的,无索引。
-- HashSet:添加的元素是无序不重复的。
-- LinkedHashSet:添加的元素是有序不重复的。
List系列集合的特点: 添加的元素是有序,可重复,有索引。
-- ArrayList: 添加的元素是有序,可重复,有索引。
-- LinkedList: 添加的元素是有序,可重复,有索引。
目标:讲解Collection集合的功能。
Collection接口是全部集合的父类。Collection集合的功能是所有集合通用的。
常用API
- public boolean add(E e)`: 把给定的对象添加到当前集合中 。
- `public void clear()` :清空集合中所有的元素。
- `public boolean remove(E e)`: 把给定的对象在当前集合中删除。
- `public boolean contains(Object obj)`: 判断当前集合中是否包含给定的对象。
- `public boolean isEmpty()`: 判断当前集合是否为空。
- `public int size()`: 返回集合中元素的个数。
- `public Object[] toArray()`: 把集合中的元素,存储到数组中
Collection集合的遍历有三种的:
(1)foreach遍历是可以的。
for(被遍历集合或者数组中元素的类型 变量 : 被遍历集合或者数组){
}
public class CollectionDemo01 {
public static void main(String[] args) {
// 1.foreac遍历集合
Collection<String> c = new ArrayList<>();
c.add("JavaEE");
c.add("Oracle");
c.add("Mysql");
c.add("Redis");
for(String s : c){
System.out.println(s);
}
}
}
(2)迭代器
public class CollectionDemo02 {
public static void main(String[] args) {
// (2)迭代器遍历集合(集合特有的)
Collection<String> c = new ArrayList<>();
c.add("JavaEE");
c.add("Oracle");
c.add("Mysql");
c.add("Redis");
System.out.println(c);
// [JavaEE, Oracle, Mysql, Redis]
// it
// 1.获取当前集合的迭代器。
Iterator<String> it = c.iterator();
/**
// 2.开始去迭代元素
System.out.println(it.next());
System.out.println(it.next());
System.out.println(it.next());
System.out.println(it.next());
// NoSuchElementException :没有这个元素异常,只能走4步
System.out.println(it.next()); */
while(it.hasNext()){
System.out.println(it.next());
}
}
}
(3)JDK 1.8之后的新技术
public class CollectionDemo03 {
public static void main(String[] args) {
// (2)迭代器遍历集合(集合特有的)
Collection<String> c = new ArrayList<>();
c.add("JavaEE");
c.add("Oracle");
c.add("Mysql");
c.add("Redis");
System.out.println(c);
// JDK 1.8之后的新技术(暂时了解): Lambda表达式遍历集合。
c.forEach( s -> {
System.out.println(s);
});
System.out.println("-------------");
c.forEach( s -> System.out.println(s) );
System.out.println("-------------");
c.forEach(System.out::println );
}
}