一、集合体系结构
集合分为两大类,一类以Collection的单列集合(一次插入一条数据),一类以Map的双列集合(一次插入一组数据)。
List系列集合:添加的元素是有序(存和取的顺序是一致的)、可重复、有索引。
Set系列集合:添加的元素无序、不重复、无索引
二、Collection常用方法练习
package com.JinJie.MyCollection;
import java.util.ArrayList;
import java.util.Collection;
//学习Collection常用方法
public class demo01 {
public static void main(String[] args) {
//因为Collection是接口,无法创建对象
//所以使用多态的方式通过创建Collection的实现类ArrayList来使用它的方法
Collection<Integer> collection = new ArrayList<>();
//1、添加元素
collection.add(11111);
collection.add(22222);
collection.add(33333);
System.out.println(collection);
//2、删除元素
boolean remove = collection.remove(11111);
System.out.println(remove);//删除成功true
System.out.println(collection);
//3、是否包含
//注意:是否包含底层是通过equles方法实现的,如果判断是否包含自定义类,需要重写equles方法,否则
//调用的是Object中的equles,它比较的是地址值而不是类的属性
boolean contains = collection.contains(22222);
System.out.println(contains);//包含为true
//4、判断是否为空
boolean empty = collection.isEmpty();
System.out.println(empty);//空为true
//5、集合大小
int size = collection.size();
System.out.println(size);
//6、清空集合
collection.clear();
System.out.println(collection);
}
}
三、Collection的遍历方式
分为三种:迭代器遍历、增强for遍历和lambda遍历。
(1)迭代器遍历
迭代器遍历不依赖索引。
注意:
1、当迭代器指向集合空元素位置时,如果还调用next()方法获取元素,则会报错: NoSuchElementException;
2、迭代器遍历完不会复位(如果要再次遍历,只能重新获取一个新的迭代器对象);
3、循环中只能用一次next()方法(否则多次next获取元素移动指针容易造成注意1的问题);
4、迭代器遍历时,不能用集合的方法进行增加或者删除(可以使用迭代器中的remove方法删除获取到的元素)。
package com.JinJie.MyCollection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
//学习Collection的三种遍历方式--》迭代器遍历
public class demo02 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("学");
collection.add("习");
collection.add("迭");
collection.add("代");
collection.add("器");
collection.add("遍");
collection.add("历");
collection.add("!");
//1.获取迭代器对象,默认指向集合的0号索引
Iterator<String> iterator = collection.iterator();
//2.判断当前元素是否为空
while (iterator.hasNext()){ //有T,没有F
//3.获取当前元素,迭代器指向下一位
String next = iterator.next();
System.out.print(next);
}
}
}
(2)增强for遍历
package com.JinJie.MyCollection;
import java.util.ArrayList;
import java.util.Collection;
//学习Collection的三种遍历方式--》增强for遍历
public class demo03 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("学");
collection.add("习");
collection.add("迭");
collection.add("代");
collection.add("器");
collection.add("遍");
collection.add("历");
collection.add("!");
for (String s: collection) {
System.out.println(s);
}
}
}
(3)lambda表达式遍历
package com.JinJie.MyCollection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
//学习Collection的三种遍历方式--》lambda表达式遍历
public class demo04 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("学");
collection.add("习");
collection.add("迭");
collection.add("代");
collection.add("器");
collection.add("遍");
collection.add("历");
collection.add("!");
/* //匿名内部类的方式
collection.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});*/
//lambda表达式
collection.forEach((s)->{
System.out.println(s);
});
}
}
四、总结