为什么我不能通过get获取元素?

来源:6-1 学生选课---判断 List 中课程是否存在

weixin_慕粉117217

2019-02-13 12:37

/**

* 测试list中是否有某课程

* @param args

*/

public void listContains() {

//获取课程中的第0个元素

Course course=courseToSelect.get(0);

System.out.println("获取的课程名为"+course.name);

System.out.println("备选课程中是否有该课程"+course.name+","+ courseToSelect.contains(course));

}

他提示这个错误

The method get(int) is undefined for the type Set<Course>?

写回答 关注

2回答

  • qq_慕圣2566072
    2019-06-07 11:01:42

    你建立的是set集合,set是无序的不能调用get方法

  • weixin_慕粉117217
    2019-02-13 12:38:27

    package whx.exerecise;


    import java.util.Arrays;

    import java.util.HashSet;

    import java.util.List;

    import java.util.Scanner;

    import java.util.Set;


    /**

     * 选课。

     * 1.提供备选课程

     * 2.为学生选课

     * @author Administrator

     *

     */

    public class SetTest {

    public Set<Course> courseToSelect;//创建一个List 的 courseToSelect

    public SetTest() {

    this.courseToSelect=new HashSet<Course>();//实例化

    }

    Student stu1=new Student("1","小明");//创建学生

    /**

     * 添加课程

     */

    public void test() {

    Course c1=new Course("1","数据结构");//创建一个课程对象

    courseToSelect.add(c1);//把课程放入list中

    Course c2=new Course("2","C语言");//创建一个课程对象

    courseToSelect.add(c2);//把课程放入list中               添加到指定位置!!!!

    //注意,添加不能大于现在集合的长度!否则报错!!

    //通过数组的方式

    Course[] c3= {new Course("3","离散数学"),new Course("4","汇编语言")};

    courseToSelect.addAll(Arrays.asList(c3));//通过Arrays.asList将c3数组传入List中!!

    Course[] c4= {new Course("5","专业英语"),new Course("6","高等数学")};

    courseToSelect.addAll(Arrays.asList(c4));//只需要传入1次即可!!

    }

    /**

    * 通过For each方法    (最简单)

    * @param args

    */

    public void testForEach() {

    System.out.println("可以选择的课程有(使用For each):");

    for(Course c:courseToSelect) {//遍历courseToSelect中的每一个元素

    Course c1=(Course)c;

    System.out.println("课程:"+c1.id+c1.name);

    }

    }

    /**

    * 创建学生,选择三门课程

    * @param args

    */

    public void Stutest() {

    System.out.println("欢迎"+stu1.name+"选课!");

    for(int i=0;i<3;i++) {

    System.out.println("请选择一门课程");

    Scanner input=new Scanner(System.in);

    String num=input.next();

    for(Course c:courseToSelect) {

    if(c.id.equals(num)) {

    Student.courses.add(c);//将选定的课程放入学生列表

    }

    }

     }

    //System.out.println("选择了课程"+Student.courses.id+":"+Student.courses.name);   不可以直接输出!需要遍历然后输出

    }

    public void StuTestForEach() {

    for(Course c:Student.courses) {

    System.out.println(c.id+":"+c.name);

    }

    }

    /**

    * 测试list中是否有某课程

    * @param args

    */

    public void listContains() {

    //获取课程中的第0个元素

    Course course=courseToSelect.get(0);

    System.out.println("获取的课程名为"+course.name);

    System.out.println("备选课程中是否有该课程"+course.name+","+ courseToSelect.contains(course));

    }

    public static void main(String[] args) {

    // TODO Auto-generated method stub

        SetTest t1=new SetTest();

        t1.test();

        t1.testForEach();

        t1.Stutest();

        t1.StuTestForEach();

        t1.listContains();

    }



    }

    这是我的全部代码,哪里的问题呢

    土不拉几的俊

    public class SetTest { public Set<Course> courseToSelect;//创建一个List 的 courseToSelect public SetTest() { this.courseToSelect=new HashSet<Course>();//实例化 } 这是你的第二行的注释你是要建立一个List来存储数据 但是你创建的是一个Set集,而Set是无需的,不能用get方法获取索引 将你创建的Set改成List就没问题了

    2019-02-16 18:02:44

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题