Java容器类类库基本概念详解

Posted mufeng_慕枫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java容器类类库基本概念详解相关的知识,希望对你有一定的参考价值。

        Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:

  • Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。
  • Map。一组成对的“键值对”对象,允许你使用键来查找值。ArrayList允许你使用数字来查找值,因此在某种意义上讲,他将数字与对象关联在了一起。映射表允许我们使用另一个对象来查找某个对象,它也被称为“关联数组”,因为它将某些对象与另外一些对象关联在了一起;或者被称为“字典”,因为你可以使用键对象来查找值对象,就像在字典中使用单词来定义一样。Map是强大的编程工具。
       尽管并非总是这样,但是在理想情况下,你编写的大部分代码都是在与这些接口打交道,并且你唯一需要指定所使用的精确类型的地方就是在创建的时候。因此,你可以像下面这样创建一个List:
List<Apple> apples = new ArrayList<Apple>();
       注意, ArrayList已经被向上转型为 List。使用接口的目的在于如果你决定去修改你的实现,你所需的只是在创建处修改它,就像下面这样:
List<Apple> apples = new LinkedList<Apple>(); 
        因此,你应该创建一个具体类的对象,将其转型为对应的接口,然后在其余的代码中都使用这个接口。
 

        这种方式并非总能奏效,因为某些类具有额外的功能,例如,
 LinkedList具有在
 List接口中未包含的额外方法,而
 TreeMap也具有在
 Map接口中未包含的方法。如果你需要使用这些方法,就不能将它们向上转型为更通用的接口。
 

        
 Collection接口概括了序列的概念——一种存放一组对象的方式。下面这个简单的示例用
 Integer对象填充了一个
 Collection(这里用
 ArrayList表示),然后打印所产生的容器中的所有元素:
 

 
package com.mufeng.theeleventhchapter;

import java.util.ArrayList;
import java.util.Collection;

class Apple 



public class SimpleCollection 
	public static void main(String[] args) 
		Collection<Integer> c = new ArrayList<>();
		for (int i = 0; i < 10; i++) 
			c.add(i);
		

		for (Integer i : c) 
			System.out.print(i + ", ");
		
	


0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
       因为这个示例只使用了 Collection方法,因此任何继承自 Collection的类的对象都可以正常工作,但是 ArrayList是最基本的序列类型。        add()方法的名称就表明它是要将一个新的元素放置到 Collection中。但是,文档中非常仔细地叙述到“要确保这个 Collection包含指定的元素。”这是因为考虑到了 Set含义,因为在 Set中只有元素不存在的情况下才会添加。在使用 ArrayList,或者任何种类的 List时, add()总是表示“把它放进去”,因为 List不关心是否存在重复。
       所有的 Collection都可以用 foreach语法遍历,就像这里所展示的。



以上是关于Java容器类类库基本概念详解的主要内容,如果未能解决你的问题,请参考以下文章

java容器详细解析

java容器详细解析(转)

你必须知道的几种java容器(集合类)

第十一章 持有对象

java集合学习笔记

java多线程3.设计线程安全类