一、Set接口
(一)Set接口概述
Set接口与上节List接口同属于Collection接口的常用子接口,其中存储的对象并不按特定的方式排序,无法保存重复的对象
适用于存储唯一、无序的对象
Set接口的常用的实现类HashSet
(二)使用HashSet类动态存储数据
LinkedList接口适用于大量的增删操作,ArrayList接口虽然通过索引在查询方面具有很高的效率,但在没有索引的条件下,查询效率仍然存在缺点,Java集合框架提供了HashSet集合类来应对这种情况
HashSet特点:
1、集合内的元素时无序排列的
2、HashSet是非线程安全的
3、允许元素为null
使用HashSet集合类实现上节新闻标题类的增删改查
/*
* 使用HashSet类的常用方法存储操作新闻标题等信息
*/
package demo;
import java.util.*;
public class Part8_4 {
public static void main(String args[]) {
NewTitle car = new NewTitle(1,"汽车","管理员");
NewTitle tech = new NewTitle(2,"科技","管理员");
//创建存储新闻标题的集合对象
Set Title = new HashSet();
//按照顺序依次添加新闻标题
Title.add(car);
Title.add(tech);
//获取新闻标题的总数
System.out.println("新闻别提数目为"+Title.size()+"条。");
//判断汽车新闻是否存在
System.out.println("汽车新闻标题是否存在:"+Title.contains(car));
Title.remove(car);
System.out.println("汽车对象已经被删除。");
System.out.println("判断集合是否为空集合:"+Title.isEmpty());
//遍历所有新闻标题
System.out.println("遍历所有新闻标题(增强for循环):");
for(Object obj:Title) {
NewTitle name = (NewTitle)obj;
System.out.println("新闻标题:"+name.getTitleName());
}
System.out.println("遍历所有新闻标题(Iterator迭代器方法):");
Iterator it = Title.iterator(); //获取集合对应的迭代器
while(it.hasNext()){
NewTitle title = (NewTitle)it.next();
System.out.println("新闻标题:"+title.getTitleName());
}
}
}
补充,代码遍历两次,前一次采用增强for循环的方式,后一次采用Iterator接口提供的迭代器遍历的方式
二、Iterator接口
(一)Iterator接口概述
Iterator接口为集合而生,专门用于遍历集合所用,常用以下方法:
(1)hasNext()方法,用于判断是否存在下一个可访问元素,如果存在,则返回true
(2)next()方法,返回下一个元素
(二)接口的使用示例
代码实例,通过Iterator方法遍历上节ArrayList接口创建的实例,后续复习章节,代码实例的遍历会根据情况采用不同的遍历方式,视情况而定。
/*
* 使用Iterator迭代器,对集合进行遍历
*/
package demo;
import java.util.*;
public class Part8_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
list.add(2,"亚瑟");
System.out.println("使用Iterator遍历,分别是:");
Iterator it = list.iterator(); //获取集合迭代器Iterator
while(it.hasNext()) {
String name = (String)it.next();
System.out.println(name);
}
}
}