ArrayList vs List ArrayList是一个可变长度的数组集合,它可以存储任何类型的对象。它是Java中的一个类,可以用来创建和操作数组列表。 List是一个泛型接口,在Java中表示可以存储任何类型对象的列表。它是ArrayList的父接口,可以用来声明和操作列表。 在功能上,ArrayList和List是相似的,它们都可以用来存储和操作对象的列表。然而,ArrayList是一个具体的类,而List是一个泛型接口,所以
14 浏览
0 Comments

ArrayList vs List ArrayList是一个可变长度的数组集合,它可以存储任何类型的对象。它是Java中的一个类,可以用来创建和操作数组列表。 List是一个泛型接口,在Java中表示可以存储任何类型对象的列表。它是ArrayList的父接口,可以用来声明和操作列表。 在功能上,ArrayList和List是相似的,它们都可以用来存储和操作对象的列表。然而,ArrayList是一个具体的类,而List是一个泛型接口,所以

我在Initialize generic object with unknown type上看到了Jon的回复:

然而,如果你想要一个集合中包含多个不相关类型的值,你将不得不使用List

我不是在比较ArrayListList<>,而是在比较ArrayListList,因为两者都会暴露出object类型的元素。在这种情况下,使用其中一个有什么好处呢?

编辑:这里并不关心类型安全性,因为两个类都将object作为其项暴露出来。仍然需要将object强制转换为所需的类型。我更感兴趣的是除了类型安全性之外的其他方面。

编辑:感谢Marc Gravell和Sean的答案。很抱歉,我只能选择一个答案,所以我会给两个人点赞。

0
0 Comments

在这种情况下,ArrayList与List相比,你不会注意到任何速度上的差异。在.NET 3.5和计数扩展方法中,实际可用的方法可能有一些差异,但这更多是由于ArrayList在某种程度上已经过时的原因。

ArrayList是.NET框架中的一个类,用于存储和操作对象的可变大小的集合。它可以存储任何类型的对象,并且可以动态调整大小以适应添加或删除元素。然而,由于ArrayList在性能和类型安全性方面的一些局限性,它在现代.NET应用程序开发中被认为是过时的。

List是.NET框架中的另一个类,它是一个泛型类,用于存储对象的可变大小的集合。与ArrayList不同,List是类型安全的,这意味着它只能存储Object类型的对象。泛型类允许程序员在编译时指定要存储在集合中的对象的类型,并提供了更好的类型检查和编译时错误检测。

在速度方面,由于ArrayList是一个非泛型类,它必须在运行时进行类型转换,以便将存储在其中的对象转换为正确的类型。这可能会导致一些额外的开销和性能损失。相比之下,List是一个泛型类,不需要进行类型转换,因此在处理对象时可能会更快。

然而,需要注意的是,在实际使用中,ArrayList和List之间的性能差异可能不明显。对于大多数应用程序来说,速度的差异可能是微不足道的,因此在选择使用哪种集合类时,更重要的是考虑到代码的清晰性和可读性。

如果你确实需要将ArrayList与List之间的性能差异降到最低,可以考虑以下解决方法:

1. 尽量使用泛型集合类,如List,以避免类型转换的开销。

2. 如果需要使用ArrayList,尽量避免频繁的类型转换操作,可以通过使用强类型的集合类来替代。

3. 在对性能要求较高的情况下,可以进行性能测试和优化,以确定哪种集合类更适合你的应用程序。

总之,ArrayList和List之间的性能差异可能是微小的,因此在选择使用哪种集合类时,更重要的是考虑到代码的清晰性和可读性。如果确实需要关注性能差异,可以通过使用泛型集合类和避免频繁的类型转换来最小化性能损失。

0
0 Comments

在使用`List`与`ArrayList`之间进行选择时,一个主要的考虑因素是现代代码通常是使用泛型类/接口编写的。现在大多数人可能会编写一个接受`IList`而不是`IList`的方法。由于`ArrayList`没有实现`IList`,所以无法在这些场景中使用`ArrayList`。

个人倾向于将非泛型的类/接口视为遗留代码,并尽可能避免使用它们。

解决方法是使用泛型类`List`而不是非泛型类`ArrayList`。泛型类提供了更加类型安全的编程环境,并且可以避免在编译时出现类型转换错误。同时,使用泛型类也更加符合现代代码编写的规范和潮流。

0
0 Comments

关于ArrayList和List之间的区别,主要涉及到使用LINQ扩展方法和性能方面的差异。下面将从原因和解决方法两方面进行详细说明。

首先,ArrayList是一个非泛型的集合类,而List是一个泛型集合类。而LINQ扩展方法是针对泛型集合类设计的,因此可以直接在List上使用。但是在ArrayList上使用LINQ扩展方法是不支持的,除非通过注入Cast() / OfType方法将其转换为IEnumerable类型。

其次,从性能方面考虑,ArrayList和List的速度几乎相同。在使用时,结构体仍然会进行装箱操作,所以在性能方面无太大差异。但是,ArrayList通常被视为“糟糕,又有人在编写遗留代码…”,因为它是非泛型的,而泛型集合类List则被认为是更现代化和类型安全的选择。

使用List相对于ArrayList的优势在于可以直接使用LINQ扩展方法,并且具备更好的类型安全性。而通过将ArrayList转换为IEnumerable类型,也可以实现在ArrayList上使用LINQ扩展方法。在性能方面,两者差异不大,但List更加现代化和推荐使用。

总之,ArrayList和List之间的区别主要体现在对LINQ扩展方法的支持和性能方面的差异。根据具体需求和编程习惯,选择合适的集合类是非常重要的。

0