首页 > 代码库 > Holding Your Objects
Holding Your Objects
# Holding your objects
Java provides a number of ways to hold objects :
>1. An array associates numberical indexes to objects. It holds objects of a known type so that you don‘t have to cast the result when you‘re looking up an object. It can be multidimensional, and it can hold primitives. However, **its size cannot be changed once you create it**.
>2. A **Collection** holds single elements, and a **Map** holds associated pairs. With Java generics, you specify the type of object to be held in the containers, so you can‘t put the wrong type into a container and you don‘t have to cast elements when you fetch them out of a container. Both **Collections** and **Maps** automatically resize themselves as you add more elements. **A container won‘t hold primitives, but autoboxing takes care of translating primitives back and forth to the wrapper types held in the container**.
>3. Like an array, a **List** also associates numerical indexes to objects - thus, **arrays and Lists are ordered containers**.
>4. Use an **ArrayList** if you‘re doing a lot of random accesses, but a **LinkedList** if you will be doing a lot of insertions and removals in the middle of the list.
>5. The behavior of **Queues** and **Stacks** is provided via the **LinkedList**.
>6. A **Map** is a way to accociate not integral values, but *objects* with other objects. **HashMaps** are designed for rapid access, whereas a **TreeMap** keeps its keys in sorted order, and thus is not as fast as a HashMap. A **LinkedHashMap** keeps its elements in insertion order, but provides repid access with hashing.
>7. A **Set** only accepts one of each type of object. **HashSets** provide maximally fast lookups, whereas **TreeSets** keep the elements in sorted order. **LinkedHashSets** keep elements in insertion order.
>8. There‘s no need to use the legacy classes **Vector**, **Hashtable**, and **Stack** in new code.
Here‘s a simpleified diagram of the Java containers.
![Alt Java Containers](http://knerd.qiniudn.com/thinking_in_java_SimpleContainerTaxonomy.png)
You can see that there are really only 4 basic container components - **Map**, **List**, **Set**, and **Queue** - and only 2 or 3 implementations of each one.
来自为知笔记(Wiz)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。