1. 定义

    • set接口及其实现类–HashSet
    • Set是元素无序且不可重复的集合,被称为集。
    • HashSet是哈希集,是Set的一个重要实现类
    • set中循环只能使用foreach和iterator这两个,而没有get()方法
    • set中无论添加某个对象多少次,最终只会保留一个该对象 的引用,并且保留的是第一次添加的那个。
    • set中add()、addAll()、remove()、removeAll()方法和List中使用方法一样
  2. 实现类

    HashSet()

    特点:

    • 不能保证元素的排列顺序,顺序有可能发生变化。
    • 另外HashSet不是同步的,如果多个线程同时访问一个Set,只要有一个线程修改Set中的值,就必须进行同步处理,通常通过同步封装这个Set的对象来完成同步,如果不存在这样的对象,可以使用Collections.synchronizedSet()方法完成。

      Set s = Collections.synchronizedSet(new HashSet(…));
    • 元素值可以是null。
  3. 使用方法
    • 定义:
public class Student {

    public String id;
public String name;
public Set<Course> courses;//Set接口定义了只能存储课程类型的变量(courses),用于存储学生所选课程
public Student(String id,String name){
this.id=id;
this.name=name;
this.courses = new HashSet<Course>(); //HashSet是Set接口的一个重要实现类
}
} Student students = new Student();//创建Student类对象
  • 添加元素:
student.courses.add(new Course("12","as"));     //如果一样就把这个元素(课程对象)添加到Student类course属性中
  • 删除Set中元素

    首先创建一个List类型变量,把set类型变量使用addAll()方法存到List集合变量中去,再使用remove()方法删除
//存储学生选课后存到Set类型变量courses中的元素,用于删除courses中的元素
List<Course> coList = new ArrayList<Course>(); //删除学生已选课程需要把学生课程这个属性放到集合coList中去
coList.addAll(student.courses); //再获取指定课程的位置(位置从0开始),再使用remove删除。
student.courses.remove(coList.get(元素位置));
  • 打印输出
for (Course cr : student.courses) {
System.out.println("选择了课程:"+cr.id+" "+cr.name);
}
  • 其他方法和List一致,大家可以自己去验证

集合(4)—Collection之Set的使用方法的更多相关文章

  1. java 数据类型:集合接口Collection之 Stream 的reduce方法

    Stream 的reduce递归计算 import java.util.ArrayList; import java.util.Arrays; import java.util.List; impor ...

  2. java集合 之 Collection和Iterator接口

    Collection是List,Queue和Set接口的父接口,该接口里定义的方法即可用于操作Set集合,也可以用于List和Queue集合.Collection接口里定义了如下操作元素的方法. bo ...

  3. Java基础(40):Java中的集合介绍---Collection与Map

    集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap ...

  4. Java集合框架Collection

    转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...

  5. Java设置的读书笔记和集合框架Collection API

    一个.CollectionAPI 集合是一系列对象的聚集(Collection). 集合在程序设计中是一种重要的数据接口.Java中提供了有关集合的类库称为CollectionAPI. 集合实际上是用 ...

  6. java8在Collection中新增加的方法removeIf

    记得我在以前找工作的经历中,遇到过一个面试官问过我一个很基础的问题.问题是:有一个List中有10个元素,我现在想从中删除3个元素,请问怎么做?我当时也没想,就直接说,List的有自带的remove方 ...

  7. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  8. Java集合(Collection)综述

    1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...

  9. 集合框架-Collection与List集合

    对象数组的内存图解: 集合的继承体系图解: * 数组和集合的区别? * A:长度区别 * 数组的长度固定 * 集合长度可变 * B:内容不同 * 数组存储的是同一种类型的元素 * 而集合可以存储不同类 ...

  10. backbone学习笔记:集合(Collection)

    集合(Collection)是一个Backbone对象,用来组织和管理多个模型,它不仅仅是一个javascript数组,还提供了专门的方法来对集合进行排序.过滤和遍历,集合可以方便的与REST服务器进 ...

随机推荐

  1. 重新学习angularjs--第一篇(入门)

    几乎是一年之前,泛泛接触了angularjs,也做了一些项目,但是时至今日,几乎已经忘记了ng的使用,由于业务需要,近日要攻克这座难关,重新学习.会把学习的一些东西拿出来,记录之. angularjs ...

  2. 关于XMLHttpRequest状态的讨论及处理方法

    今天主要是讨论下XMLHttpRequest的响应状态问题.我们知道,XMLHttpRequest的响应阶段有5个,分别是: 请求未初始化 服务器连接已建立 请求已接收 请求处理中 请求已完成,且响应 ...

  3. Ex 5_26 变量约束是否能同时满足(并查集)_第九次作业

    利用并查集进行处理,定义一个维护数组components,components[i]表示变量序号为i的变量所处的集合,首先处理相等的变量,把它们放入同一个集合中,最后再处理不相等变量,若两个不相等的变 ...

  4. Eclipse开发环境配置

    1. java环境 安装 本系统使用java6开发,老师使用1.6.0 _45版本开发,如下图所示: "开发工具"目录提供了1.6.0 _45版本32位和64位两个安装程序,大家根 ...

  5. 关于Newtonsoft.Json,反序列化jason,内容有key的转换

    Newtonsoft.Json,反序列化,对于result里面的结果,可以使用Dictionary<string, List<类名>>,string是key值,value又是一 ...

  6. laravel使用when搜索遇到状态参数(有0的状态)的坑

    今天,使用when()方法写活动列表的接口,有两个状态搜索,都有0这个状态,当传参为0时when()就失效了... 反反复复的验证参数,传参确实是0和1啊...百思不得其解~~~后面仔细想想when( ...

  7. 目标检测-ssd

    intro: ECCV 2016 Oral arxiv: http://arxiv.org/abs/1512.02325 paper: http://www.cs.unc.edu/~wliu/pape ...

  8. cf1061c 普通dp题

    题解见https://blog.csdn.net/godleaf/article/details/84402128 这一类dp题是可以压缩掉一维空间的,本题枚举a1到an,枚举到ai时枚举ai的每个约 ...

  9. python3笔记(二)Python语言基础

    缩进 要求严格的代码缩进是python语法的一大特色,就像C语言家族(C.C++.Java等等)中的花括号一样重要,在大多数场合还非常有必要.在很多代码规范里面也都有要求代码书写按照一定的规则进行换行 ...

  10. whiledo循环输出数组中的分数

    var scores = [24, 32, 17]; var arrayLength = scores.length; var i =0; while(i < arrayLength){ var ...