集合作用
1.动态保存任意多个对象。
2.提供操作对象方法比如add,remove,set,get等方法。
3.使用集合添加,删除代码简洁。
集合分类
集合分为单列集合以及双列集合。
单列集合:
双列集合:
Collection接口特点
1.Collection接口没有直接实现的子类,只有通过它的子接口(list接口)和(set接口)实现。
2.Collection接口的实现类可以存放重复的类,有一些则不可以。
3.Collection接口的实现类有一些是有序的,可重复的(list)以及有一些是无序的,不可重复。
Collection接口常用方法
1.add(“添加元素”)
2.remove(“删除元素”)
3.set(“修改元素”)
4.get(“返回元素”)
5.contains(“查找元素是否存在”)
6.size(“获取元素个数”)
7.isEmpty(“是否为空”)
8.addAll(“添加多个元素”)
9.removeAll(“删除多个元素”)
10.containsAll(“查找多个元素是否存在”)
Collection 接口遍历元素方式 1-使用 Iterator(迭代器)
Iterable接口有一个方法Iterator,所有的实现了Iterable接口的子接口以及实现类(参考单列集合图片)都有一个Iterator方法,返回一个Iterator接口的对象, Iterator本身不存储对象,只是用来遍历集合元素
public class CollectionIterator {
public static void main(String[] args) {
// 向上转型,Collection接口指向它的子类ArrayList
Collection list = new ArrayList();
list.add(new Book("倚天屠龙记","金庸",80));
list.add(new Book("风云","马荣成",60));
list.add(new Book("绝代双骄","古龙",47));
System.out.println("循环遍历输出集合里面的元素:");
Iterator iterator = list.iterator(); //只要是实现Collection接口了就可以使用迭代器
while (iterator.hasNext()){ //iterator.hasNext():判断是否有下一个元素
// iterator.next():向下移动元素并且返回集合位置上的元素
// System.out.println(iterator.next()); 等价于下面的写法
Object obj = iterator.next();
System.out.println(obj);
}
}
}
class Book{
private String name;
private String author;
private int age;
public Book(String name, String author, int age) {
this.name = name;
this.author = author;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", age=" + age +
'}';
}
}
Collection 接口遍历对象方式 2-for 循环增强
增强for循环就是简化版的迭代器(iterator),只能遍历集合或者是数组
语法:
for(元素类型 元素名 : 集合名 或者 数组名){
访问元素
}
public class CollectionIterator {
public static void main(String[] args) {
// 向上转型,Collection接口指向它的子类ArrayList
Collection list = new ArrayList();
list.add(new Book("倚天屠龙记","金庸",80));
list.add(new Book("风云","马荣成",60));
list.add(new Book("绝代双骄","古龙",47));
System.out.println("循环遍历输出集合里面的元素:");
// list为集合名,o为元素名,Object为元素类型
for (Object o : list) {
System.out.println(o);
}
}
}
class Book{
private String name;
private String author;
private int age;
public Book(String name, String author, int age) {
this.name = name;
this.author = author;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", age=" + age +
'}';
}
}
list接口作用
list接口时Collection接口的子接口,list的集合类具有可重复性(可以输入相同的元素)以及有序性(添加的顺序和取出的顺序一致)。
list集合类中的元素都有对应的索引。
list接口的常用方法
add(int index, Object ele):在 index 位置插入 ele 元素
addAll(int index,Collection eles):从 index 位置开始将 eles 中的所有元素添加进
get(int index):获取指定 index 位置的元素
indexOf(Object obj):返回 obj 在集合中首次出现的位置(后面如果还出现就不管)
lastIndexOf(Object obj):返回 obj 在当前集合中末次出现的位置(前面如果还出现就不管)
set(int index, Object ele):设置指定 index 位置的元素为 ele , 相当于是替换或者修改
subList(int fromIndex, int toIndex):返回从 fromIndex 到 toIndex 位置的子集合
(取值范围是一个闭区间到开区间)