在Java中何时使用各种通用容器

在Java中何时使用各种通用容器,java,collections,Java,Collections,有人知道我可以阅读哪些资源或书籍来帮助我理解各种Java集合类吗? 例如:何时使用集合而不是列表 您什么时候会使用映射而不是列表,其中V有一个成员getId,如下所示,允许您在列表中搜索与给定键匹配的元素: class V { T getId(); } 谢谢如果你想要地图式的行为,你可以使用地图。如果您想要类似列表的行为,可以使用列表。如果您不在乎,您可以使用集合 泛型与此无关 请参阅。如果您想要类似地图的行为,请使用地图。如果您想要类似列表的行为,可以使用列表。如果您不在乎,您可以

有人知道我可以阅读哪些资源或书籍来帮助我理解各种Java集合类吗?
例如:
何时使用
集合而不是
列表
您什么时候会使用
映射
而不是
列表
,其中V有一个成员getId,如下所示,允许您在列表中搜索与给定键匹配的元素:

class V {
   T getId();
}


谢谢

如果你想要地图式的行为,你可以使用地图。如果您想要类似列表的行为,可以使用
列表。如果您不在乎,您可以使用
集合

泛型与此无关


请参阅。

如果您想要类似地图的行为,请使用
地图。如果您想要类似列表的行为,可以使用
列表。如果您不在乎,您可以使用
集合

泛型与此无关


请参阅。

一个好的起点是Java API。每个集合都有与其相关联的良好描述。之后,您可以在Google上搜索任何关于Java集合的文章和书籍。

一个好的起点是Java API。每个集合都有与其相关联的良好描述。之后,您可以在Google上搜索关于Java集合的各种文章和书籍。

您可以查看Java集合的文档


无论如何,一条基本规则是:对参数的类型尽可能通用。接口的返回类型应尽可能通用。尽可能具体地说明你最后一节课的返回类型。

你可以查看课程的文档


无论如何,一条基本规则是:对参数的类型尽可能通用。接口的返回类型应尽可能通用。尽可能具体地说明最终类的返回类型。

非常好,涵盖了集合框架和泛型。

非常好,涵盖了集合框架和泛型。

您可以查看sun教程。它详细地解释了一切


(实现部分解释它们之间的区别)

您可以查看sun教程。它详细地解释了一切


(实施部分解释它们之间的区别)

决策取决于您的数据和使用数据的需要

如果您有可以使用特定键标识每个元素的数据,并且希望使用该键访问或查找该元素,则应使用映射

如果您没有键,但对元素的顺序感兴趣,则可以创建一个列表。就像一堆字符串,你想按用户输入的顺序存储

如果不想将同一元素存储两次,则可以使用集合

对于您的决定来说,另一个有趣的问题是您是否在am多线程环境中工作。因此,如果多个线程在同一时间访问同一个列表,您宁愿使用向量而不是ArrayList

顺便说一句,对于某些集合,如果您的数据类实现了类似comparable的接口,或者至少重写了equals函数,那么它是有用的


你会发现更多的信息

决定取决于您的数据和您使用数据的需要

如果您有可以使用特定键标识每个元素的数据,并且希望使用该键访问或查找该元素,则应使用映射

如果您没有键,但对元素的顺序感兴趣,则可以创建一个列表。就像一堆字符串,你想按用户输入的顺序存储

如果不想将同一元素存储两次,则可以使用集合

对于您的决定来说,另一个有趣的问题是您是否在am多线程环境中工作。因此,如果多个线程在同一时间访问同一个列表,您宁愿使用向量而不是ArrayList

顺便说一句,对于某些集合,如果您的数据类实现了类似comparable的接口,或者至少重写了equals函数,那么它是有用的


你会发现更多的信息

大多数Java书籍都会很好地解释集合框架。我发现这本书有一个很好的章节,解释了为什么选择一个收藏而不是另一个收藏的原因


Head first Java也有一个很好的介绍,但可能无法解决选择哪一个的问题。

大多数Java书籍都会很好地解释集合框架。我发现这本书有一个很好的章节,解释了为什么选择一个收藏而不是另一个收藏的原因


Head-first Java也有一个很好的介绍,但可能无法解决选择哪个的问题。

您的问题的答案是如何使用数据结构?为了更好地了解这些可能性,最好查看整个集合接口层次结构。为了简单起见,我将此讨论仅限于经典接口,而忽略所有并发接口

Collection
+- List
+- Set
   +- SortedSet

Map
+- SortedMap
因此,我们可以从上面看到,地图和收藏是不同的东西

集合在某种程度上类似于一个包,它包含许多值,但对它们没有进一步的保证。列表只是一组有序的值,其中顺序是从外部定义的,而不是从值本身隐式定义的。另一方面,集合是一组值,其中没有两个值是相同的,但是它们不是有序的,既不是显式的,也不是隐式的。SortedSet是一组隐式排序的唯一值,也就是说,如果对这些值进行迭代,则它们将始终以相同的顺序返回

映射是从一组键映射到值。SortedMap是从键的SortedSet到值的映射

为什么你想用地图而不是列表?这在很大程度上取决于您需要如何查找数据。如果您需要(有效地)使用一个键进行随机查找,那么您应该使用一个集合
LinkedList< A > doSomething(Collection< A > col);
Collection< A > doSomething(LinkedList< A > list);