Java集合中Set的常见问题及用法
在这里演示的案例是衔接Java集合中的List(点击查看)那篇博文的,本节我们学习的Set的用法。
Set是Collection的一个重要的子接口,Set中的元素是无序排列的,并且元素不可以重复,被称为集。它有一个重要的实现类HashSet--哈希集。Set只能使用foreach或Iterator迭代器进行遍历,Set中添加某个对象,无论添加多少次,最终只会保留一个该对象的引用,并且保留的是第一次添加的那一个。
下面我们可以用添加学生课程的案例显示Set的用法:
创建一个学生类Student
import java.util.HashSet;
import java.util.Set; /**
* 学生类
* @author lenovo
*
*/
public class Student { public String id; public String name; public Set<KeCheng> kecheng; public Student(String id,String name){
this.id = id;
this.name = name;
this.kecheng = new HashSet<KeCheng>();
} }
创建一个SetTest的演示类
package collection; import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class SetTest { public List<KeCheng> kcList; public SetTest(){
this.kcList = new ArrayList<KeCheng>();
} /*
* 增加课程的方法
*/
public void addKC(){
KeCheng kc = new KeCheng("1","大学语文");
kcList.add(kc);
KeCheng kc2 = new KeCheng("2","大学英语");
kcList.add(kc2);
KeCheng kc3 = new KeCheng("3","高等数学");
kcList.add(kc3);
} /*
* 使用for each遍历课程
*/
public void testForeach(){
System.out.println("使用for each遍历课程:");
for(Object obj : kcList){
KeCheng kc = (KeCheng)obj;
System.out.println("课程:"+kc.id+":"+kc.name+";");
}
} /*
* 遍历学生选的课程
*/
public void testStuKC(Student s){
System.out.println(s.name+"选择了"+s.kecheng.size()+"门课程:");
for(KeCheng kc:s.kecheng){
System.out.println("课程ID:"+kc.id+":"+kc.name+";");
}
} public static void main(String[] args) { //实例化SetTest对象,执行添加课程、遍历课程的方法
SetTest st = new SetTest();
st.addKC();
st.testForeach(); //实例化学生的一个对象
Student stu = new Student("1","Tom"); //使用扫描器添加学生选课的ID
Scanner sc = new Scanner(System.in); for (int i = 0; i < 3; i++) {
System.out.println("请输入课程ID:");
String kcid = sc.next(); //遍历课程的List
for(KeCheng kc:st.kcList){ //判断添加的课程ID在List中是否存在
if(kc.id.equals(kcid)){
/*
* Set中,添加某个对象,无论添加多少次,
* 最终只会保留一个该对象的引用,
* 并且保留的是第一次添加的那一个
*/
stu.kecheng.add(kc);
}
} } //遍历学生所选的课程
st.testStuKC(stu);
} }
运行上面的代码,显示结果为:
使用for each遍历课程:
课程:1:大学语文;
课程:2:大学英语;
课程:3:高等数学;
请输入课程ID:
1
请输入课程ID:
2
请输入课程ID:
3
Tom选择了3门课程:
课程ID:1:大学语文;
课程ID:2:大学英语;
课程ID:3:高等数学;
删除学生所选课程 ,使用迭代器删除,用foreach会报错
/*
* 删除课程
*/
Iterator it = stu.kecheng.iterator();
while(it.hasNext()){
KeCheng kc = (KeCheng) it.next();
if(kc.name.equals("大学语文")){
it.remove();
}
}
Java集合中Set的常见问题及用法的更多相关文章
- Java集合中迭代器的常用用法
该例子展示了一个Java集合中迭代器的常用用法public class LinkedListTest { public static void main(String[] args) { List&l ...
- Java集合中Comparator和Comparable接口的使用
在Java集合中,如果要比较引用类型泛型的List,我们使用Comparator和Comparable两个接口. Comparable接口 -- 默认比较规则,可比较的 实现该接口表示:这个类的实例可 ...
- java集合中List与set的区别
java集合中List与set的区别. List可以存储元素为有序性并且元素可以相同. set存储元素为无序性并且元素不可以相同. 下面贴几段代码感受一下: ArrayL ...
- Java集合中的LinkedHashMap类
jdk1.8.0_144 本文阅读最好先了解HashMap底层,可前往<Java集合中的HashMap类>. LinkedHashMap由于它的插入有序特性,也是一种比较常用的Map集合. ...
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...
- Java集合中List,Set以及Map等集合体系详解
转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...
- Java集合中List、Set以及Map
概述: List , Set, Map都是接口:List , Set继承至Collection接口,Map为独立接口 Set下有HashSet,LinkedHashSet,TreeSet List下有 ...
- java项目中ehcache缓存最简单用法
java项目中ehcache缓存最简单用法: 1.下载ehcache-core-2.4.3.jar复制到项目的lib目录下 2.新建ehcache.xml文件,放置在项目src目录下的resour ...
- java集合中的传值和传引用
在学习java集合过程中发现了传值和传引用的区别: 我们来看下面两句话 ●java集合就像一种容器,我们可以把多个对象(实际上是对象的引用),丢进该容器.(来自疯狂java讲义) ●当使用Iterat ...
随机推荐
- apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
<Directory "要去掉PHP执行权限的目录路径,例如:D:/piaoyun.cc/upload"> ErrorDocument 404 /404/404.h ...
- Ubuntu终端常用的快捷键
Ubuntu终端常用的快捷键 Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应手.在Ubuntu中打开终端的快捷键是Ctrl+Alt+T.其他的一些常用的快 ...
- R-处理数据对象的实用函数
- VTK初学一,a_Vertex图形点的绘制
系统:Win8.1 QT版本:2.4.2,Mingw VTK版本:6.3 2. main.cpp #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #incl ...
- 清北学堂模拟day4 传球接力
[问题描述]n 个小朋友在玩传球. 小朋友们用 1 到 n 的正整数编号. 每个小朋友有一个固定的传球对象,第 i 个小朋友在接到球后会将球传给第 ai个小朋友, 并且第 i 个小朋友与第 ai个小朋 ...
- POJ 2299 Ultra-QuickSort
离散化+树状数组求逆序数 Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 35024 Accept ...
- php连接mysql
一.php连接mysql的函数 1.mysql_connect 作用:连接mysql eg:$con=mysql_connect('localhost','root','123456'); 2.mys ...
- 开发板支持wifi
参考网址: http://wangye.org/blog/archives/845/ http://blog.csdn.net/lme525/article/details/37762519 htt ...
- hash-5.ConcurrentHashMap
http://www.cnblogs.com/dolphin0520/p/3932905.html有时间细看
- HDU 4793 Collision(2013长沙区域赛现场赛C题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4793 解题报告:在一个平面上有一个圆形medal,半径为Rm,圆心为(0,0),同时有一个圆形范围圆心 ...