一、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. Codeforces Round #281 (Div. 2) A. Vasya and Football 暴力水题

    A. Vasya and Football time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  2. Automate Screen or Button Taps via Tasker : Simulating keypress events

    When using Tasker, sometimes we want to do some automation on screen e.g. screen or button taps. At ...

  3. DU 4609 3-idiots FFT

    题意还是比较好懂. 给出若干个木棍的长度,问这些木棍构成三角形的可能性. 那么公式很容易知道 就是这些木棍组成三角形的所有情况个数 除以 从n个木棍中取3个木棍的情况数量C(n, 3) 即可 但是很显 ...

  4. [MySql]锁表与解锁

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

  5. 调试查看CLR运行代码

    SOS (Son of Strike)调试扩展可以让我们在调试过程中查看CLR运行代码.SOS.dll随.NET一起安装,对于.NET 4.0来说,SOS.dll的所在位置是:C:\Windows\M ...

  6. Android Gradle Plugin指南(五)——Build Variants(构建变种版本号)

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 6. Build Vari ...

  7. python测试开发django-6.模板中include使用

    前言 当我们打开一个网站的时候,在打开不同的页面时候,会发现每个页面的顶部.底部内容都差不多,这样就可以把这些公共的部分,单独抽出来. 类似于python里面的函数,把公共部分写成函数,然后调用就行了 ...

  8. icanhazip.com 使你在不论什么地方知道你的公网IP地址

    icanhazip.com 使你在不论什么地方知道你的公网IP地址 icanhazip.com是一个网址,你在浏览器中输入这个网址,你就能得到你的公网IP地址了. 我在Linux下一般使用curl i ...

  9. Mybatis 传入List类型参数,报错:There is no getter for property named '__frch_item_0' in

    错误如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Re ...

  10. 微软企业库Unity学习笔记

    本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习 ...