Java List和Collection排序查询

标签 java list collections

我知道 Java 中的 List 保证保持顺序,但 Collection 则不然。

我的问题是,如果我有一个 list1,并将该 list1 分配给一个集合,然后将该集合转换为一个列表 list2,那么 list2 的顺序是否与 list1 相同?

或者它会丢失顺序,因为它在某个时候被当作集合处理了吗?

谢谢大家的帮助。

最佳答案

你混淆了两个概念:

  1. 变量、字段、...的编译时声明
  2. 对象的运行时“身份”

换句话说;当然,编译器允许你这样写:

List<Whatever> stuff = new ArrayList<>();
stuff.add(whatever);

Collection<Whatever> stuffInCollection = stuff;
Object loosingAllTypeInformation =  stuffInCollection;
List<Whatever> castingBack = (List<Whatever>) loosingAllTypeInformation;

但是在运行时,这些赋值都不会对内存中的列表对象产生任何影响。它仍然坐在那里,它仍然是一个 ArrayList 对象;它有一个 Whatever 类型的成员。

换句话说:创建引用同一对象的多个变量/字段不会对引用的对象产生任何(直接)影响;不管那是什么物体。

当有多个变量/字段引用同一个对象时,唯一可能改变的可能是该对象有资格被垃圾收集的时间点。

关于Java List和Collection排序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39295841/

相关文章:

java - 使用 TreeMap 的排序问题

multithreading - 快速线程安全读取优化 Map[Long, _]

java - JPA 和 Derby 性能

html - 如何包含 css 父编号 html?

java - Java 中的跨域 DOM 访问和操作?

python - 如何使用快速排序在列表列表中按索引排序

python - 如何有条件地跳过 python 中 for 循环中的迭代步骤数?

java - 有没有办法使用 java8 进一步优化下面的代码?

Java - 遍历链表仅返回null

java - 如何将图片添加到 javaFX 2.0 netbeans 项目