日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中集合的结构Set类型

發布時間:2024/9/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中集合的结构Set类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

collection ?集合

Collection接口 是List Set和Queue接口的父接口 定義了可用于操作List,Set和Queue的方法---增刪改查

Set ?HashSet
Set接口及其實現類---HashSet ?Set是元素無序并且不可以重復的集合,被稱為集
HashSet---哈希集,是Set的一個重要實現類

List--->元素有序,可以重復 ?Set--->元素無序,不可以重復

set循環用foreach,iterator ? list集合用get()方法

課程類Course如下所示:
/**
* 課程類
*/
public class Course
{
?? ?public String id;
?? ?public String name;
?? ?public Course(String id,String name){
?? ? ?this.id ? = id;
?? ? ?this.name = name;
?? ?}
?? ?//添加一個無參構造器
?? ?public Course() {
?? ?
?? ?}
?? ?//重新equals函數,這個寫了一部分不再寫了
?? ?/*@Override
?? ?public boolean equals(Object obj) {
?? ? ? if(this == obj) {
?? ? ? ? ?return true;
?? ? ? }
?? ? ? if(obj == null)?
?? ??? ? ? return false;
?? ? ? return true;
?? ?}
? ? */
}

學生類Student如下所示:
import java.util.Set;
import java.util.HashSet;
/**
* 學生類
*/
//public class Student
public class Student implements Comparable<Student> {

?? ?public String id;
?? ?public String name;
?? ?//public Set courses;//課程信息的屬性,以前這樣的實例
?? ?public Set<Course>courses;//課程信息的屬性

?? ?public Student(String id,String name){ //構造器
?? ? ?this.id ? = id;
?? ? ?this.name = name;
?? ? ?//this.courses = new HashSet();//以前這樣寫
?? ? ?this.courses = new HashSet<Course>();
?? ?}//Student end

?? ?@Override
?? ?public int hashCode() {
?? ? ?final int prime = 31;
?? ? ?int result = 1;
?? ? ?result = prime*result + ((name == null)?0:name.hashCode());
?? ? ?return result;
?? ?}
?? ?@Override
?? ?public boolean equals(Object obj) {
?? ? ? if(this == obj)
?? ??? ? ? return true;
?? ? ? if(obj == null)?
?? ??? ? ? return false;
? ? ? ?if(!(obj instanceof Student))
?? ??? ? ? return false;
?? ? ? Student other = (Student)obj;
?? ? ? if(name == null) {
?? ? ? ? if(other.name != null)?
?? ??? ??? ?return false;
?? ? ? }else if(!name.equals(other.name))
?? ??? ? ? return false;
?? ? ? return true;
?? ?}
?? ?@Override
?? ?public int compareTo(Student o) {
?? ? ? return this.id.compareTo(o.id);
?? ?}//compareTo end
}//Student end

Set的測試類SetTest如下所示:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class SetTest
{
?? ?public List<Course> coursesToSelect;
?? ?private Scanner console;
?? ?public Student student;
?? ?public SetTest() {
?? ? ?coursesToSelect = new ArrayList<Course>();
?? ? ?console = new Scanner(System.in);
?? ?}//SetTest end

? ? public void testAdd() {

?? ? ?Course cr2 = new Course("2","C語言");
?? ? ?coursesToSelect.add(0,cr2);
?? ? ?Course temp2 = (Course)coursesToSelect.get(0);
?? ? ?//System.out.println("添加了課程:"+temp2.id+":"+temp2.name);
?? ?}
?? ?/*
?? ? * 通過for each方法訪問集合元素
?? ? * @param args
?? ?*/
?? ?public void testForEach() {
?? ? ? System.out.println("有如下課程待選(通過for each訪問):");
?? ? ? for(Object obj:coursesToSelect) {
?? ? ? ? ?Course cr = (Course)obj;
?? ??? ? ?System.out.println("課程:"+cr.id+":"+cr.name);
?? ? ? }
?? ?}
? ?/*
?? ? * 測試List的contains方法
?? ?*/
?? ?public void testListContains() {
?? ? ? //取得備選課程序列的第0個元素
?? ? ? Course course = coursesToSelect.get(0);
?? ? ? //打印輸出coursesToSelected是否包含course對象
? ? ? ?System.out.println("取得課程:"+course.name);
?? ? ? System.out.println("備選課程中是否包含課程:"+course.name+","+coursesToSelect.contains(course));
?? ? ? //提示輸入課程名稱
? ? ? ?System.out.println("請輸入課程名稱:");
?? ? ? String name= console.next();
?? ? ? //創建一個新的課程對象,ID和名稱,與course對象完全一樣
? ? ? ?//Course course2 = new Course(course.id,course.name);
?? ? ? Course course2 = new Course();
?? ? ? course2.name = name;
?? ? ? System.out.println("新創建課程:"+course2.name);
?? ? ? System.out.println("備選課程中是否包含課程:"+course2.name+","+coursesToSelect.contains(course2));
?? ?}
?? ? //創建學生對象并選課
?? ? public void createStudentAndSelectCours() {
?? ? ? ?//創建一個學生對象
?? ??? ?student = new Student("1","小明");
? ? ? ? System.out.println("歡迎學生:"+student.name+"選課!");
?? ??? ?//創建一個scanner對象,用來接收從鍵盤輸入的課程ID
?? ? ? ?Scanner console = new Scanner(System.in);

?? ??? ?for(int i=0;i<3;i++) {
?? ??? ? ? System.out.println("請輸入課程ID");
?? ??? ? ? String courseId = console.next();
?? ??? ? ? for(Course cr:coursesToSelect) {
?? ??? ? ? ? ?if(cr.id.equals(courseId)) {
?? ??? ??? ? ? ?student.courses.add(cr);
?? ??? ??? ??? ?/**
?? ??? ??? ??? ? set中,添加某個對象,無論添加多少次
?? ??? ??? ??? ? 最終只會保留一個該對象(的引用)
?? ??? ??? ??? ? 并且,保留的是第一次添加的那一個
?? ??? ??? ??? ?**/
?? ??? ??? ??? ?//student.courses.add(null);
?? ??? ??? ??? ?//student.courses.add(cr);
?? ??? ??? ? ?}//if end
?? ??? ? ? }//for end
?? ??? ?}//最外層for end
?? ? }//createStudentAndSelectCours end
?? ?/*
?? ? * 測試Set的contains方法
?? ?*/
?? ?public void testSetContains() {
?? ? ? //提示輸入課程名稱
?? ? ? System.out.println("請輸入學生已選的課程名稱");
?? ? ? String name=console.next();
?? ? ? //創建一個新的課程對象,ID和名稱,與course對象完全一樣
?? ? ? Course course2 = new Course();
? ? ? ?course2.name = name;
? ? ? ?System.out.println("新創建課程:"+course2.name);
?? ? ? System.out.println("備選課程中是否包含課程:"+course2.name+","+student.courses.contains(course2));
?? ? ? //通過indexOf方法來取得某元素的索引位置
?? ? ? if(coursesToSelect.contains(course2)) {
?? ? ? ? ? System.out.println("課程:"+course2.name+"的索引位置為:"+coursesToSelect.indexOf(course2));
?? ? ? }
?? ?}//testSetContains end
?? ?public static void main(String[] args) {
?? ? ? //System.out.println("nihaoya");?
?? ? ? SetTest st = new SetTest();
?? ? ? st.testAdd();
?? ? ?// st.testListContains();
?? ? ?// st.testForEach();

?? ? ?// st.createStudentAndSelectCours();
?? ? ?// st.testSetContains();
?? ? ? st.testListContains();
?? ? ? st.testForEach();
?? ? ??
?? ? ? /*
?? ? ? ?res:
?? ??? ?D:\javacode\code>java SetTest
? ? ? ? 取得課程:C語言
?? ??? ?備選課程中是否包含課程:C語言,true
?? ??? ?新創建課程:C語言
?? ??? ?備選課程中是否包含課程:C語言,false
?? ? ? */
?? ? ? /*st.testForEach();
?? ? ? //創建一個學生對象
?? ? ? Student ?student = new Student("1","小明");
? ? ? ?System.out.println("歡迎學生:"+student.name+"選課!");
?? ? ? //創建一個Scanner對象,用來接收從鍵盤輸入的課程ID
?? ? ? Scanner console = new Scanner(System.in);
?? ? ? for(int i=0;i<3;i++) {
?? ? ? ? System.out.println("請輸入課程ID");
?? ??? ? String courseId = console.next();
?? ??? ? for(Course cr:st.coursesToSelect){
?? ??? ? ? ?if(cr.id.equals(courseId)) {
?? ??? ??? ? ?student.courses.add(cr);*/
?? ??? ??? ? ?/**
?? ??? ??? ? ? * ?set中,添加某個對象,無論添加多少次
?? ??? ??? ? ? * ?最終只會保留一個該對象(的引用)
?? ??? ??? ? ? * ?并且,保留的是第一次添加的那一個
?? ??? ??? ? ?*/
?? ??? ??? ? ?//student.courses.add(cr);
?? ??? ??? ? ?//student.courses.add(null);
?? ??? ??? ?/*}//if end
?? ??? ? }//里層的for
?? ? ? }//最外層的for

?? ? ? st.testForEachForSet(student);*/
?? ?}//main end
?? ?public void testForEachForSet(Student student) {
?? ? ? //打印輸出,學生所選的課程!
?? ? ? System.out.println("共選擇了:"+student.courses.size()+"門課程!");
?? ? ? for(Course cr:student.courses) {
?? ? ? ? System.out.println("選擇了課程:"+cr.id+":"+cr.name);
?? ? ? }
?? ?}
}

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的java中集合的结构Set类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。