为了账号安全,请及时绑定邮箱和手机立即绑定

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

/**

* 测试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 回答

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

0 回复 有任何疑惑可以回复我~

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();

}



}

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

0 回复 有任何疑惑可以回复我~
#1

土不拉几的俊

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 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信