collection接口和常用方法
1、collection接口实现类的特点
(1)collection实现子类可以存放多个元素,每个元素可以是object
(2)有些collection的实现类,可以存放重复的元素,有些不可以
(3)有些collection的实现类,有些是有序的(List),有些不是无序的(set)
(4)collection接口没有直接的实现子类,是通过它的子接口set和list来实现的
2、collection接口常用方法
由于接口collection无法被实例化,所以用collection子类ArrayList来进行说明:
remove:删除指定元素,一种返回结果,一种返回删除的元素
import java.lang.reflect.Array;
import java.util.ArrayList;
public class CollectionMethod {
public static void main(String[] args) {
//说明:以ArrayList实现类来演示
ArrayList list = new ArrayList<>();
//add:添加元素
list.add("jack");
list.add(10);
list.add(true);
System.out.println("list="+list);
//remove:删除指定元素
//list.remove(10);这里调用两个remove输出会报错
list.remove(true);
System.out.println("list="+list);
list.contains("jack");
System.out.println(list);
//contain:查找元素是否存在
System.out.println(list.contains("jack"));
//size:获取元素个数
System.out.println(list.isEmpty());//返回Boolean
//clear:清空
list.clear();
System.out.println("list=" + list);
//addall:添加多个元素
ArrayList list2 = new ArrayList();
list2.add("红楼梦");
list2.add("三国演义");
list.addAll(list2);
System.out.println("list="+list);
//removeAll:删除多个元素
list.add("聊斋");
list.removeAll(list2);
System.out.println("list="+list);
}
}
2、collectionj接口遍历元素方式1:使用itertor(迭代器)
注意事项:当迭代器的while循环结束的时候,游标指到集合的最后一个位置,如果再往下取会出现异常:no such element exception
如果希望再次用iterator遍历,需要先重置迭代器(iterator = col.iterator)
(1)itertor对象称为迭代器,主要用于遍历collection集合中的元素。
(2)所有实现了collection接口的集合类都有一个itertor()方法,用于返回一个实现了itertor接口的对象,即可以返回一个迭代器。
(3)itertor的结构:
(4)itertor仅用于遍历集合,itertor本身不存放对象;
code1:使用iterator
package arrays_; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * 迭代器的执行原理: * Iterator iterator 0= col.iterator//得到一个集合的迭代器 * hasnext():判断是否还有下一个元素 * while(iterator.hasnext()){ * 作用1:迭代器指针下移, * 作用2:将下移以后的集合位置上的元素返回 * 作用3:判断集合是否还有数据 * } */ public class CollectionIterator { public static void main(String[] args) { Collection col = new ArrayList(); //创建ArrayList并让他的接口类型指向他的子类 col.add(new Book("三国演义", "罗贯中")); col.add(new Book("水浒传", "施耐庵")); //System.out.println(col);//全部一次性输出 //1、先得到集合col对应的迭代器 Iterator iterator = col.iterator(); //想要遍历col集合 //使用while循环遍历 //快捷键:itit+回车,显示所有快捷键的快捷键:CTRL+J while (iterator.hasNext()) { Object obj = iterator.next();//编译类型是Object但运行类型取决与你真正存放的对象 System.out.println("obj=" + obj); } //3、当推出while循环时,这时iterator迭代器指向最后的元素 //4、如果希望再次遍历,需要先重置我们的迭代器 iterator = col.iterator();//重置迭代器 System.out.println("以下是第二次遍历的结果:"); while (iterator.hasNext()) { Object next = iterator.next();//把每一个指向的集合元素返回给next对象 //再用sout输出 System.out.println("obj" + next); } } } class Book { private String name; private String author; public Book(String name, String author) { this.name = name; this.author = author; } 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; } @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", author='" + author + '\'' + '}'; } }
运行结果:
code2:分别使用增强for循环和iterator遍历list
package arrays_;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class collectionExercise {
public static void main(String[] args) {
List list = new ArrayList();
//为什么可以?因为ArrayList实现了List接口,List 就可以指向 ArrayList类型
list.add(new Dog("小黑", 3));
list.add(new Dog("小黄", 4));
//先使用for循环增强来遍历list
//快捷键:大写i+回车
for (Object dog : list) {
System.out.println("dog=" +dog);
}
//使用迭代器
Iterator iterator = list.iterator();//iterator是list下的方法
//以下:itit+回车
while (iterator.hasNext()) {
Object next = iterator.next();
//通过sout函数输出你想要遍历的
System.out.println("dog"+next);
}
}
}
class Dog {
private String name;
private int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
运行结果: