一、Set接口的定义

Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素
  • Set接口的主要方法与Collection是一致的
  • Set接口的实例无法像List接口那样进行双向输出.不存在get方法使用Iterator接口来遍历集合

2个常用方法:hasNext方法表示判断是否还有元素可以迭代

next()方法:返回迭代的下一个元素

  • Set接口的常用子类

散列存放:HashSet

有序存放:TreeSet

二、使用SetHashSet

package com.pb.demo2;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set; import com.pb.demo2.Person; public class PersonSetTest { public static void main(String[] args) {
/*
* 创建多个Person对象并赋值
*/
Person p1 = new Person("张三",21);
Person p2 = new Person("李四",22);
Person p3 = new Person("王五",23);
Person p4 = new Person("赵六",24);
Person p5 = new Person("钱七",25);
//创建Set接口对象HashSet
Set<Person>pset=new HashSet<Person>();
//通过add方法铺实现添加
pset.add(p1);
pset.add(p2);
pset.add(p3);
pset.add(p4);
pset.add(p5);
//获取长度
System.out.println("长度为: "+pset.size());
System.out.println("===========使用Iterator来遍历===============");
//因为没有get方法,使用Iterator来遍历
Iterator<Person> piterator=pset.iterator();
//使用next和hasNext方法来遍历
while(piterator.hasNext()){
Person p = piterator.next();
System.out.println("姓名: "+p.getName());
System.out.println("年龄: "+p.getAge());
}
System.out.println("=========使用foreach来遍历=============");
//使用foreach来遍历
for (Person p : pset) {
System.out.println("姓名: "+p.getName());
System.out.println("年龄: "+p.getAge());
}
} }

三、验证散列的存放:HashSet

package com.pb.demo2;

import java.util.HashSet;
import java.util.Set; public class HashSetTest { public static void main(String[] args) {
Set<String> allSet = new HashSet<String>();
allSet.add("A") ; // 增加元素
allSet.add("B") ; // 增加元素
allSet.add("C") ; // 增加元素
allSet.add("A") ; // 重复元素,不能加入
allSet.add("C") ; // 重复元素,不能加入
allSet.add("D") ; // 增加元素
allSet.add("E") ; // 增加元素
System.out.println("长度:"+allSet.size());
System.out.println(allSet.toString()) ; // 输出集合对象,调用toString() } }

四、验证有序的存放:TreeSet

package com.pb.demo2;

import java.util.HashSet;
import java.util.Set; public class HashSetTest { public static void main(String[] args) {
Set<String> allSet = new HashSet<String>();
allSet.add("A") ; // 增加元素
allSet.add("B") ; // 增加元素
allSet.add("C") ; // 增加元素
allSet.add("A") ; // 重复元素,不能加入
allSet.add("C") ; // 重复元素,不能加入
allSet.add("D") ; // 增加元素
allSet.add("E") ; // 增加元素
System.out.println("长度:"+allSet.size());
System.out.println(allSet.toString()) ; // 输出集合对象,调用toString() } }

Java从零开始学二十二(集合Set接口)的更多相关文章

  1. Java从零开始学四十二(DOM解析XML)

    一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...

  2. Java从零开始学三十二(正则表达式)

    一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完 ...

  3. Java从零开始学四十(反射简述一)

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

  4. 从零开始学安全(十二)●建立自己的DNS服务器

    我们的环境windows server 2012   虚拟机 打开服务器的添加角色和向导功能 添加DNF服务器安装 点击 在正向查找区域 反键新建区域 这里我一般输入一级域名 这是输入baidu.co ...

  5. Java从零开始学三十九(对象序列化)

    一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储.   序列化保存对象的“全景图”,构建对象的“ ...

  6. Java从零开始学四十五(Socket编程基础)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  7. Java从零开始学四十四(多线程)

    一.进程与线程 1.1.进程 进程是应用程序的执行实例. 进程是程序的一次动态执行过程,它经历了从代码加载.执行到执行完毕的一个完整过程,这个过程也是进程本身从产生.发展到最终消亡的过程 特征: 动态 ...

  8. Java从零开始学三十八(JAVA IO- 重定向IO)

    一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重 ...

  9. Java从零开始学三十六(JAVA IO- 字符流)

    一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的 ...

  10. Java从零开始学三十五(JAVA IO- 字节流)

    一.字节流 FileOutputStream是OutputStream 的直接子类 FileInputStream也是InputStream的直接子类 二.文本文件的读写 2.1.字节输入流 Test ...

随机推荐

  1. Uva 12889 One-Two-Three

      Your little brother has just learnt to write one, two and three, in English. He has written a lot ...

  2. Linux命令service - 系统服务管理(转)

    用途说明 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启(restart).查看状态(status)等.相关的命令还包括chkconfig.ntsysv等,c ...

  3. mysql文件目录详解 LINUX

    http://www.cnblogs.com/yjf512/archive/2012/12/11/2813398.html

  4. blkblock 2工具

    http://blog.yufeng.info/archives/tag/blktrace

  5. HTTP的KeepAlive是开启还是关闭?

    HTTP的KeepAlive是开启还是关闭? http://itindex.net/detail/50719-http-keepalive 1.KeepAlive的概念与优势 HTTP的KeepAli ...

  6. [MySql]锁表与解锁

    摘要 为啥会出现锁表的情况?锁表会导致数据表的其他操作超时,频繁的插入修改查询很容易出现锁表的情况.如果遇到这种情况,临时的解决办法,可以通过下面的方式进行解锁.如果长期有效的解决,那么就需要优化项目 ...

  7. 配置Tomcat成为系统服务

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. Oracle通用分页存储过程的创建与使用

    Oracle通用分页存储过程的创建与使用 1.创建Oracle包的定义.使用 REF CURSOR 数据类型来处理 Oracle 结果集.REF CURSOR 是一个指向 PL/SQL 查询所返回的结 ...

  9. UIButton使用方法汇总

    //按钮初始化类方法 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];//这里创建一个圆角矩形的按钮 //按 ...

  10. [5] 柱台(Cylinder)图形的生成算法

    顶点数据的生成 bool YfBuildCylinderVertices ( Yreal topRadius, Yreal bottomRadius, Yreal height, Yuint slic ...