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

当有三种不同类型的列表时,如何使用函数显示列表的元素

李成礼
2023-03-14

所以我正在为一所大学写一个注册系统应用程序(用JAVA写的)我有三个类学生、教师和课程。在驱动程序类中,我有三个每种类型的ArrayList来保存所述类型的不同对象。我需要一个选项来打印列表中的当前元素,现在我基本上为每种类型的列表编写了三次相同的代码。我想知道我将如何实现一个函数来为所有三个列表做到这一点。我的主要问题是如何设置函数的参数,以便它可以打印任何类型的ArrayList。

我想到的一个可能的解决方案是将ArrayList设置为静态,让函数接受一个int作为参数,以指示正在显示的列表类型。不过,我不确定让列表保持静态是否是个好主意。

或者我只是想得太多了,我应该保持原样。我的主要方法是变得很长,所以我试图找出如何用其他方法简化。

共有3个答案

邢卓
2023-03-14

如果您仍然想使用您的展示列表,可以这样修改它:

public void showList(List<Object> a) {
     StringBuffer msg = new StringBuffer();
     for (int i = 0; i < a.size(); i++) {
         // generate a sequence
         msg.append(a.get(i).toString() + ",");
     }
     // cut the last comma
     msg = msg.substring(0,msg.length()-1);
     JOptionPane.showMessageDialog(null,msg.toString());
}

我建议您为这三个类创建一个基类,基类包含一个属性(Name)和两个方法(setName、getName)。所以你可以像列表一样定义你的列表,你不需要关心真正的实体是否是学生、课程等等。您只需调用getName,比如:entity。getName()获取列表的字符串值。

阚英武
2023-03-14

我所有的toString方法都被重写了,但我想问的是,我如何将函数作为参数实现到任何类型的列表中,换句话说

public void showList(List<Object> a) {
     for (int i = 0; i < a.size(); i++) {
         JOptionPane.showMessageDialog(null,a.get(i).toString());
     }
}

当我调用函数时,我可以指定它是什么类型的列表作为参数,然后输入

List<Student> students = new ArrayList<Student>();

showList(students);

然而,我确实意识到这是不可能的,但有办法解决吗?

司寇安宜
2023-03-14

您应该在3个类中的每一个中覆盖toString()方法。

然后,在你的方法中,你只需在每个对象上循环,并调用toString任何类型。

如果您还不知道如何覆盖方法,请参阅此线程以获取有关如何覆盖方法的更多信息。

 类似资料:
  • 以下是我的清单: 我想问题出在“路易”和“大虾”,因为列表是空的。我该怎么解决呢?

  • 我正在对地图执行firestore查询 没有人工作过,任何帮助都是感激的 谢谢你抽出时间

  • 我有以下型号。 组织模式 用户模型 组织DTO 用户DTO 当我尝试将这些模型映射到DTO时,我得到以下错误。 处理请求时出错org.modelmapper.MappingException: ModelMapper映射错误:\r\n\r\n1)将组织映射到组织Dto时出错。 下面是我使用的转换器。 这就是映射器的配置方式。 我发现当我从UserDto类中删除组织字段并从Converter类中删除

  • 我有一个棘手的XML要散集: 我的第一个想法是: 但是因为根元素和列表元素都命名为“供应商”,所以它给了我一个例外: 当我删除供应商类别上的@XmlRootElement(名称=“供应商”)时,它开始正确取消封印。 有人能解释一下处理这个棘手的XML的正确方法是什么吗?为什么我的解决方法有效?

  • 问题内容: 我有两个环境和。在督促环境中,我们有三个数据中心,并和分期有一个数据中心。每个数据中心只有几台机器,我为它们定义了常量,如下所示: 现在,我在同一个类中定义了另一个常量,该常量将DC分组为每种环境类型的计算机列表。 现在在其他班上,根据我所处的环境,我会得到或。 现在,我认为可以用某种Enum更好地表示它,而不必像上面定义的那样定义常量,但是我不知道该怎么办?我从此开始,但是对于如何为