Java集合中Set的常见问题及用法

java

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

回到顶部