Java集合中Set的常见问题及用法
Java集合中Set的用法,Set是Collection的一个重要的子接口,Set中的元素是无序排列的,并且元素不可以重复,被称为集。它有一个重要的实现类HashSet--哈希集。
在这里演示的案例是衔接Java集合中的List(点击查看)那篇博文的,本节我们学习的Set的用法。
Set是Collection的一个重要的子接口,Set中的元素是无序排列的,并且元素不可以重复,被称为集。它有一个重要的实现类HashSet--哈希集。Set只能使用foreach或Iterator迭代器进行遍历,Set中添加某个对象,无论添加多少次,最终只会保留一个该对象的引用,并且保留的是第一次添加的那一个。
下面我们可以用添加学生课程的案例显示Set的用法:
创建一个学生类Student
1 import java.util.HashSet;2 import java.util.Set;
3
4 /**
5 * 学生类
6 * @author lenovo
7 *
8 */
9 public class Student {
10
11 public String id;
12
13 public String name;
14
15 public Set<KeCheng> kecheng;
16
17 public Student(String id,String name){
18 this.id = id;
19 this.name = name;
20 this.kecheng = new HashSet<KeCheng>();
21 }
22
23 }
创建一个SetTest的演示类
1 package collection;2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Scanner;
6
7 public class SetTest {
8
9 public List<KeCheng> kcList;
10
11 public SetTest(){
12 this.kcList = new ArrayList<KeCheng>();
13 }
14
15 /*
16 * 增加课程的方法
17 */
18 public void addKC(){
19 KeCheng kc = new KeCheng("1","大学语文");
20 kcList.add(kc);
21 KeCheng kc2 = new KeCheng("2","大学英语");
22 kcList.add(kc2);
23 KeCheng kc3 = new KeCheng("3","高等数学");
24 kcList.add(kc3);
25 }
26
27 /*
28 * 使用for each遍历课程
29 */
30 public void testForeach(){
31 System.out.println("使用for each遍历课程:");
32 for(Object obj : kcList){
33 KeCheng kc = (KeCheng)obj;
34 System.out.println("课程:"+kc.id+":"+kc.name+";");
35 }
36 }
37
38 /*
39 * 遍历学生选的课程
40 */
41 public void testStuKC(Student s){
42 System.out.println(s.name+"选择了"+s.kecheng.size()+"门课程:");
43 for(KeCheng kc:s.kecheng){
44 System.out.println("课程ID:"+kc.id+":"+kc.name+";");
45 }
46 }
47
48
49 public static void main(String[] args) {
50
51 //实例化SetTest对象,执行添加课程、遍历课程的方法
52 SetTest st = new SetTest();
53 st.addKC();
54 st.testForeach();
55
56
57 //实例化学生的一个对象
58 Student stu = new Student("1","Tom");
59
60 //使用扫描器添加学生选课的ID
61 Scanner sc = new Scanner(System.in);
62
63 for (int i = 0; i < 3; i++) {
64 System.out.println("请输入课程ID:");
65 String kcid = sc.next();
66
67 //遍历课程的List
68 for(KeCheng kc:st.kcList){
69
70 //判断添加的课程ID在List中是否存在
71 if(kc.id.equals(kcid)){
72 /*
73 * Set中,添加某个对象,无论添加多少次,
74 * 最终只会保留一个该对象的引用,
75 * 并且保留的是第一次添加的那一个
76 */
77 stu.kecheng.add(kc);
78 }
79 }
80
81 }
82
83 //遍历学生所选的课程
84 st.testStuKC(stu);
85 }
86
87 }
运行上面的代码,显示结果为:
使用for each遍历课程:课程:1:大学语文;
课程:2:大学英语;
课程:3:高等数学;
请输入课程ID:
1
请输入课程ID:
2
请输入课程ID:
3
Tom选择了3门课程:
课程ID:1:大学语文;
课程ID:2:大学英语;
课程ID:3:高等数学;
删除学生所选课程 ,使用迭代器删除,用foreach会报错
1 /*2 * 删除课程
3 */
4 Iterator it = stu.kecheng.iterator();
5 while(it.hasNext()){
6 KeCheng kc = (KeCheng) it.next();
7 if(kc.name.equals("大学语文")){
8 it.remove();
9 }
10 }
以上是 Java集合中Set的常见问题及用法 的全部内容, 来源链接: utcz.com/z/390377.html