Java—集合框架Set
- Set接口及其实现类——HashSet
Set是元素无序并且不可以重复的集合,被称作集。
HashSet—哈希集,是Set的一个重要实现类。
- Set的使用
HashSet没有像List一样的set()方法来用指定元素替换指定位置的元素,因为Set集合的元素是无序的。同样也不能用访问索引的方式来获取指定位置的元素。
Course.java
package com.test.collection; /**
* 课程类
* @author Administrator
*
*/
public class Course {
public String id;
public String name;
public Course(String id, String name){
this.id = id;
this.name = name;
}
}
Student.java
package com.test.collection; import java.util.HashSet;
import java.util.Set;
/**
* 学生类
* @author Administrator
*
*/
public class Student {
public String id;
public String name;
public Set<Course> courses;//所选课程
public Student(String id, String name) {
this.id = id;
this.name = name;
this.courses = new HashSet<Course>();//实例化sourses接口(Set是接口,接口不能被直接实例化)
}
}
SetTest.java
package com.test.collection; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class SetTest {
public List<Course> coursesToSelect;
public SetTest() {
coursesToSelect = new ArrayList<Course>();
}
public void testAdd() {
Course c1 = new Course("1", "数据结构");//创建课程对象的实例
Course c2 = new Course("2", "C语言");
Course c3 = new Course("3", "离散数学");
Course c4 = new Course("4", "汇编语言");
Course[] course = {c1, c2, c3, c4};
coursesToSelect.addAll(Arrays.asList(course));
} public void testForEach() {
System.out.println("有以下课程可以选择:(通过For Each)");
for (Object obj : coursesToSelect) {
Course c = (Course) obj;
System.out.println("课程:" + c.id + ":" + c.name);
}
} public void testForEachForSet(Student student) {
System.out.println("共选择了" + student.courses.size() + "门课程!");
for (Course c : student.courses) {
System.out.println("选择了课程:" + c.id + ":" + c.name);
}
} public static void main(String[] args) {
SetTest st = new SetTest();
st.testAdd();
st.testForEach(); Student student = new Student("1", "李雷");
Scanner console = new Scanner(System.in); for (int i = 0; i < 3; i++) {
System.out.println("请输入课程编号:");
String courseId = console.next();
for(Course c : st.coursesToSelect ) {
if (c.id.equals(courseId)) {
student.courses.add(c);
//student.courses.add(null);
}
}
} st.testForEachForSet(student);
}
}
执行结果:
有以下课程可以选择:(通过For Each)
课程::数据结构
课程::C语言
课程::离散数学
课程::汇编语言
请输入课程编号: 请输入课程编号: 请输入课程编号:
4
共选择了3门课程!
选择了课程::离散数学
选择了课程::数据结构
选择了课程::汇编语言
注:Set中,添加某个对象,无论添加多少次,最终只会保留一个该对象(的引用),并且,保留的是第一次添加的那个。Set的remove和removeAll方法的用法与List一致。
Java—集合框架Set的更多相关文章
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
- Java 集合框架
Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...
- Java集合框架之map
Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...
- 22章、Java集合框架习题
1.描述Java集合框架.列出接口.便利抽象类和具体类. Java集合框架支持2种容器:(1) 集合(Collection),存储元素集合 (2)图(Map),存储键值对.
- Java集合框架实现自定义排序
Java集合框架针对不同的数据结构提供了多种排序的方法,虽然很多时候我们可以自己实现排序,比如数组等,但是灵活的使用JDK提供的排序方法,可以提高开发效率,而且通常JDK的实现要比自己造的轮子性能更优 ...
- (转)Java集合框架:HashMap
来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...
- Java集合框架
集合框架体系如图所示 Java 集合框架提供了一套性能优良,使用方便的接口和类,java集合框架位于java.util包中, 所以当使用集合框架的时候需要进行导包. Map接口的常用方法 Map接口提 ...
- Java集合框架(常用类) JCF
Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...
随机推荐
- Apache Shiro(三)-登录认证和权限管理MD5加密
md5 加密 在前面的例子里,用户密码是明文的,这样是有巨大风险的,一旦泄露,就不好了.所以,通常都会采用非对称加密,什么是非对称呢?就是不可逆的,而 md5 就是这样一个算法.如代码所示 123 用 ...
- java 读取 xlsx
package test; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream ...
- Java static{}语句块详解
[转自] http://blog.csdn.net/lubiaopan/article/details/4802430 static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一 ...
- 初用msui.js
MSui,基于 Framework7 开发,组件功能使用Zepto库提供.定位轻量级的ui库 简单的使用MSui组件只需要引入所提供的CDN则可 <link rel="styleshe ...
- PIE SDK元素的删除
1功能简介 元素删除是将根据需求将不符合的元素进行删除,PIE SDK支持元素的删除操作,下面对元素的删除功能进行介绍. 2功能实现说明 2.1.1 实现思路及原理说明 第一步 获取已经选择的元素 第 ...
- MAC 下 STF 的环境搭建和运行
STF --WEB 端批量移动设备管理控制工具 安装各种包 (首先安装Macport,因为后面需要用到port:http://www.ccvita.com/434.html) linux的基本包安装, ...
- Java基础24-文档注释
格式: /** .......*/ /** 此类是对数组进行取最大值 @author 深海溺心 @version 1.0 */ public class Compare{ private Compar ...
- vue中添加util公共方法&&ES6之import、export
vue中添加util公共方法&&ES6之import.export https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Re ...
- mac下安装ionic
我的mac系统是EI Capitan,如下图所示. ionic是一个跨平台的框架,能够提供高效hybrid app的开发,而且性能接近于原生态,具体请参考:http://ionicframework. ...
- unity接入讯飞教程
[全流程]<按照这个流程做即可,有不懂得可以看下面的2个><这个是<eclipse>> http://blog.csdn.net/qq_15267341/artic ...