当前位置: 首页 > 知识库问答 >
问题:

如何从Java的HashMap填充列表?

马德宇
2023-03-14

作为我作业的一部分,我们得到了一个我们不能更改的接口,以及一些用来开发我们方法的预定义测试。

界面如下:

public interface ContactTracer {
    public void addCourse(String courseID, String courseName);
    public void addStudent(String id, String name, String email);
    public void loadStudentCourseList(Map<String, String> enrolments);
    
    public String getStudentName(String studentID);
    public String getStudentEmail(String studentID);
    public String getCourseForStudent(String studentID);
    public String getCourseName(String courseID);
    public List<String> findStudentsForCourse(String courseID);
    public List<String> findContacts(String studentID);

我正在运行的特定测试:

@Test
void testLoadStudentCourseList()    {
    ContactTracer ct = new PartOneContactTracer();
    Map<String, String> enrolments = new HashMap<>();
    enrolments.put("S101", "SOFT01");
    enrolments.put("S102", "NET02");
    enrolments.put("S103", "SOFT01");
    ct.loadStudentCourseList(enrolments);
    List<String> students = ct.findStudentsForCourse("SOFT01");
    assertEquals(2, students.size());
    assertTrue(students.contains("S101"));
    assertTrue(students.contains("S103"));

以及我需要从测试中创建的方法:

@Override
public List<String> findStudentsForCourse(String courseID) {
    return null;
}

从测试中我可以看出,在findStudentsForCourse方法中,我需要创建列表 students 并用注册映射中匹配的学生填充它,然后返回列表。

我创建了以下字段:-

public class PartOneContactTracer implements ContactTracer {
    
    private Map<String, String> courseDetails = new HashMap<>();
    private Map<String, String> studentName = new HashMap<>();
    private Map<String, String> studentEmail = new HashMap<>();
    private Map<String, String> enrolments = new HashMap<>();

我搞不懂的是,如何将注册地图中的数据传递到学生列表中,以使测试中的断言为真。

共有1个答案

闻人越
2023-03-14

您不需要创建列表并填充它,只需在地图中搜索所有具有值(课程id)的键(学生):

public List<String> findStudentsForCourse(String courseId) {
    return enrolments.entrySet().stream()
        .filter(e -> e.getValue().equals(courseId))
        .map(e -> e.getKey())
        .collect(Collectors.toList());
}
 类似资料:
  • 所以我用Java处理这些数据: 我需要将其转换为JSON: 但是我不知道怎么做。 目前我认为这是最好的方法: 但我不确定如何使用Hashmap实现这一点。我知道是这样的: 但确切的语法,以及如何将其与其他数据一起添加,我无法计算。有什么想法吗?

  • 我有一个有两列的表,一个是string,另一个是double Type。例如, 我正在尝试读取所有的值,并将它们加载到中 我在读取表数据方面没有任何问题,但不能按我的要求将它们放入HashMap中。 我编写了一个示例代码来从两个不同的数组(string和double)填充一个HashMap,但仍然无法处理HashMap的值部分,它是一个数组。 任何建议我如何处理HashMap的值部分,它是一个数组

  • 问题内容: 是否可以使用Spring @Value将值从属性文件映射到HashMap。 目前,我有这样的事情,映射一个值不是问题。但是我需要在HashMap到期中映射自定义值。这样的事情可能吗? 属性文件:“ my_service.properties” 是否可以像这样的键映射:值集 name1 = 100 name2 = 20 问题答案: 在Spring配置中注册属性文件: 然后创建组件: 当我

  • 我如何从一个HashMap填充JList而只在列表中显示值呢?

  • 第一个类称为FileReader,它读取一个逐行写入的txt文件,我们需要的每个字段都用“;”分隔,例如(“哥伦比亚大学”;“美国”;78.86;2012)。每行包含2个字符串(大学名和国家)和2个数字(分数和年份)。FileReader类在读取txt文件后,在ArrayList中返回其内容。 该作业的第二个类称为UniversityScores,它有4个字段(uniname、country、sc