Java的Collection接口和常用方法(Iterator和增强for)
Collection接口实现类的特点:
public interface Collection<E> extends Iterable<E>1)Collection实现子类可以存放多个元素,每个元素都可以是Object
2)有些Collection的实现类,可以存放重复的元素,有些不可以
3)有些Collection的实现类,有些是有序的(List),有些不是有序(Set)
4)Collection接口没有直接的实现子类,是通过它的子接口Set和List来实现的
Collection接口常用方法,以实现子类ArrayList来演示
1)add:添加单个元素
2)remove:删除指定元素
3)contains:查找元素是否存在
4)size:获取元素个数
5)isEmpty:判断是否为空
6)clear:清空
7)addAll:添加多个元素
8)containsAll:查找多个元素是否都存在
9)removeAll:删除多个元素
package com.ArrListStu;import java.util.ArrayList;
import java.util.List;public class CollectionMethod {public static void main(String[] args) {List list = new ArrayList();// add:添加单个元素list.add("jack");list.add(10);//会发生自动装箱,将10转为Integer list.add(new Integer(10))list.add(true);System.out.println(list);// remove:删除指定元素//list.remove(0);删除第一个元素list.remove("jack");//指定删除某个对象System.out.println(list);// contains:查找元素是否存在if(list.contains(10)){System.out.println("有这个数");}// size:获取元素个数System.out.println(list.size());//上面删除了一个// isEmpty:判断是否为空System.out.println(list.isEmpty());// clear:清空list.clear();System.out.println(list);// addAll:添加多个元素,只要是实现了Collection接口的对象都能传进去ArrayList list2 = new ArrayList();list2.add("红楼梦");list2.add("三国演义");list.addAll(list2);System.out.println(list);// containsAll:查找多个元素是否都存在System.out.println(list.containsAll(list2));// removeAll:删除多个元素list.add("聊斋");list.removeAll(list2);System.out.println(list);}
}Collection接口遍历元素方式1 -- 使用Iterator(迭代器)
基本介绍:
1)Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
2)所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器
3)Iterator的结构:

4)Iterator仅用于遍历集合,Iterator本身并不存放对象
注意:在调用iterator.next() 方法前必须调用iterator.hasNext() 进行检测,若不调用,且下一条记录无效,直接调用iterator.next() 会抛出
迭代器使用案例:
package com.ArrListStu;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;@SuppressWarnings({"all"})
public class CollectionIterator {public static void main(String[] args) throws Exception{Collection col = new ArrayList();col.add(new Book("三国演义","罗贯中",10.1));col.add(new Book("小李飞刀","古龙",5.1));col.add(new Book("红楼梦","曹雪芹",34.6));//现在希望能够遍历集合,指定取出//先得到集合对应的迭代器Iterator iterator = col.iterator();//使用while循环遍历即可while(iterator.hasNext()){ //判断是否还有数据//返回下一个元素,类型是ObjectObject obj = iterator.next();System.out.println(obj); //动态绑定,obj编译类型是Object,运行类型取决于存放的类型}//快捷键快速生成 while ==> itit 回车//显示所有快捷键的快捷键 ==> ctrl + j//当退出while循环后,这时 iterator迭代器指向最后的元素// 接着往下取会报异常NoSuchElementException//如果希望再次遍历,需要重置迭代器iterator = col.iterator();//把迭代器重新赋给它就行了}
}
class Book{private String name;private String author;private double price;public Book(String name, String author, double price) {this.name = name;this.author = author;this.price = price;}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 double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +'}';}
}Collection接口遍历对象方式2 -- 使用增强for循环
增强for循环,可以代替 iterator迭代器,特点:增强for就是简化版的iterator,本质一样,只能够用于遍历集合或数组
基本语法:
for(元素类型 元素名:集合名或数组名){
访问元素
}
package com.ArrListStu;import java.util.ArrayList;
import java.util.Collection;public class CollectionFor {public static void main(String[] args) {Collection col = new ArrayList();col.add(new Book("三国演义","罗贯中",10.1));col.add(new Book("小李飞刀","古龙",5.1));col.add(new Book("红楼梦","曹雪芹",34.6));//使用增强for//解读://可以在Collection使用//底层仍然是迭代器//可以理解成增强for就是简化版本的迭代器遍历//快捷方式 I (大写的 i)//增强for在Collection使用for(Object obj : col){System.out.println(obj);}//增强for也可以直接在数组使用int nums[] = {1,8,10,99,2};for(int i : nums){System.out.println(i);}}
}