【问题标题】:How to use for each loop in java if there has multiple datatypes in an array list?如果数组列表中有多种数据类型,如何在java中使用每个循环?
【发布时间】:2017-07-24 07:16:42
【问题描述】:

如果数组中有多个数据类型,java中的每个循环如何使用?

到目前为止我的代码:

ArrayList al=new ArrayList();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
al.add(123);
al.add(456);

for(??? obj: al)

【问题讨论】:

  • 现已编辑。你能帮忙看看吗
  • 为什么不Object
  • 其他:它不是一个数组。这是一个ArrayList

标签: java arrays loops collections foreach


【解决方案1】:

您可以使用Object 类型:

for (Object obj:al){}

【讨论】:

  • 谢谢。它正在运行,但我在控制台中收到以下消息:java 使用未经检查或不安全的操作。
  • 这是一个警告而不是错误,所以代码仍然可以编译。让我检查一下我得到了什么并回复你
  • 我收到的所有警告都只是说要参数化 ArrayList 的泛型类型,在初始化它时通过参数化它消失了:ArrayList<Object> al=new ArrayList<Object>();
  • 谢谢@priyaraj。现在它没有显示任何警告
【解决方案2】:

真正的答案在这里:退后一步,了解generics

您面临的各种问题是由一件简单的事情引起的:您对自己在做什么没有多少线索。

首先,您使用的是 raw 类型(不向您的列表提供类型参数)。理想情况下,列表的使用方式如下:

List<Whatever> items = new ArrayList<>();

在您的情况下,应为 Object

但是:您在同一个列表中包含不同事物的想法可能已经是不好的实践。你看,集合为你提供了泛型,明确地说:“我有一个 X 列表”。然后您可以放心,该列表中只有 X 个对象。

换句话说:拥有List&lt;Object&gt; 是您通常想要避免的事情。您希望编译器可以帮助您了解该列表中有哪些类型的对象!

【讨论】:

  • 谢谢。你是绝对正确的。我是集合的新手,因为不知道需要学习的许多东西。
猜你喜欢
  • 2015-03-18
  • 2015-08-22
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 2016-06-15
  • 2013-09-08
  • 2015-07-27
  • 1970-01-01
相关资源
最近更新 更多