一、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. centos7安装zookeeper3.4.9集群

    本篇文章目的:以最小成本学习zookeeper的集群安装. zookeeper的三要素: 1.一致,能够保证数据的一致性 2.有头,始终有一个leader,node/2+1个节点有效,就能正常工作 3 ...

  2. Android 性能优化之使用MAT分析内存泄露

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/42396507),请尊重他人的辛勤劳动成果,谢谢! 我们平常 ...

  3. XFire Web Service

    Web Service 创建HelloWorldService项目 首先要启动Web Service Project 向导.该向导由三个页面组成,第一页设置Web项目配置的详细信息:第二页设置XFir ...

  4. 第二章 ActionScript 3.0学习之画星星(鼠标及键盘事件)

    今天觉得学到的比较有趣,所以记录之......~~~ 下面这段就是画出星星的代码:StarShape.as package { import flash.display.Shape; import f ...

  5. 《JavaScript启示录》

    <JavaScript启示录> 基本信息 作者: (美)Cody Lindley 译者: 徐涛 出版社:人民邮电出版社 ISBN:9787115334947 上架时间:2014-2-21 ...

  6. winform禁用标题栏

    protected override void WndProc(ref Message m) { if (m.Msg == 0x112) { switch ((int)m.WParam) { //禁止 ...

  7. 嵌入式linux GUI--DirectFB + GTK至尊秘笈

    前言 数年前,曾经开发过一个嵌入式的产品,如今市场依然存在,但由于电子产品的升级换代很快,许多元器件都采购不到了,为了延续产品的生命周期,计划在linux平台上开发新的版本.而在linux上的GUI上 ...

  8. 【POJ】【2068】Art Gallery

    计算几何/半平面交 裸的半平面交,关于半平面交的入门请看神犇博客:http://blog.csdn.net/accry/article/details/6070621 然而代码我是抄的proverbs ...

  9. ASP.NET—015:ASP.NET中无刷新页面实现

    原文作者:杨友山 原文地址:http://blog.csdn.net/yysyangyangyangshan/article/details/39679823 前面也说过在asp.net中前后前交互的 ...

  10. WIDGET和鼠标特效的DEMO

    原创WIDGET和鼠标特效的DEMO, 键盘1 平移Widget键盘2 旋转Widget键盘3 缩放Widget DEMO中,实现对BOX的旋转缩放位移 下载地址: http://pan.baidu. ...