java的List接口
文章目录
- Set实现类
- Set实现类的本质
- 遍历Set接口的两种方法
Set实现类
Set接口存储一组唯一 无序的对象,在Set中存放的是对象的引用。那么Set接口中最常用的就是HashSet。所以,本文将以HashSet为代表描述Set的创建和具体方法。
Set实现类的本质
package cn.zhz.Test;
import java.util.HashSet;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
Set set = new HashSet();
String s1 = new String("java");
String s2 = s1;
String s3 = new String("JAVA");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());
}
}
也就是说打印出的结果是2
那么Set接口如何判断加入的对象是否已经存在了呢?其实可以采用对象的equals()的方法比较两个对象是否相等
如果将s3中的JAVA改写成java结果会是什么呢?
package cn.zhz.Test;
import java.util.HashSet;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
Set set = new HashSet();
String s1 = new String("java");
String s2 = s1;
String s3 = new String("java");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());
}
}
打印出的结果是1
遍历Set接口的两种方法
还是前面存储新闻标题的栗子,只不过由List接口变成了Set接口。但是相对于List接口不同的是,因为Set接口存储的是无序的元素,没有元素的下标,Set获取元素的数据时并没有get()方法。
那么应该如何遍历Set集合呢?
这里提供两种方法:
第一种方法:增强型for循环
第二种方法:通过迭代器Iterator实现遍历
获取Iterator:Collection接口中的iterator()方法
Iterator的常用方法有:
boolean hasNext():判断是否存在另一个可访问的元素
Object next():返回要访问的下一个元素
package cn.zhz.Kind;
public class NewsTitle {
private int id;
private String title;
private String author;
public NewsTitle() {
}
public NewsTitle(int id, String title, String author) {
super();
this.id = id;
this.title = title;
this.author = author;
}
public String getTitle() {
return title;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public void setTitle(String title) {
this.title = title;
}
}
package cn.zhz.Test;
//对新闻标题的存储和操作
import cn.zhz.Kind.NewsTitle;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
//对新闻标题的存储和操作(HashSet)
public class NewsMgr3 {
public static void main(String[] args) {
// 创建新闻标题对象
NewsTitle title1 = new NewsTitle(1, "北京热门景点故宫", "author");
NewsTitle title2 = new NewsTitle(2, "北京热门景点长城", "author");
NewsTitle title3 = new NewsTitle(3, "北京热门景点北海", "author");
NewsTitle title4 = new NewsTitle(4, "北京热门景点颐和园", "author");
NewsTitle title5 = new NewsTitle(5, "北京热门景点天安门", "author");
// 创建集合对象,并且将新闻标题加入到集合中去
Set set = new HashSet();
//Set-->Collection(add(Object))
set.add(title1);
set.add(title2);
set.add(title3);
set.add(title4);
set.add(title5);
// 获取新闻标题的总数
System.out.println("新闻标题一种有" + set.size() + "条记录");
//逐条打印新闻标题的名称(注意:打印的结果并非按照代码的顺序添加来的,是无序的)
//方法1:增强型的for
for (Object obj : set) {
NewsTitle title = (NewsTitle) obj;
System.out.println(title.getTitle() + "-" + title.getAuthor());
}
System.out.println("******************************************");
//方法2:迭代器Iterator
//(1)获取迭代器对象
Iterator itor = set.iterator();
//(2)判断是否存在下一个元素
while (itor.hasNext()) {
NewsTitle title = (NewsTitle) itor.next();
System.out.println(title.getTitle() + "-" + title.getAuthor());
}
}
}
那么其实迭代器Iterator可以遍历Set,同样也可以遍历集合。
有序集合 | 无序集合 |
普通for遍历索引,增强型的for循环、迭代器Iterator | 增强型的for、迭代器Iterator |
java的Map接口