java的Set接口

java的List接口

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接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45671732

你们鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值