【Java基础】 (List、Set、Map、Stack、Queue)总结

来源:互联网 发布:mac 蓝牙解锁 编辑:程序博客网 时间:2024/06/05 15:40

1、引入背景 
如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序,而在通常情况下程序总在运行时才知道某些条件去创建对象,所以就不能通过创建命名的引用来持有每一个对象,因为你不知道这样的对象有多少个,java中有多种方案来保存对象的引用,下面就将介绍容器类来解决这样的问题。

2、Collection容器 
其代表一个独立的元素序列,这些元素都遵循一条或者多条规则。

2.1、List 
List可以将元素维持在特定序列中,常见的子类实现有

ArrayList   快速查询,插入删除效率低LinkedList 快速插入删除、查询效率低
  • 1
  • 2

2.2、Set 
用来保存不重复的元素,常用的实现有

HashSet  TreeSet 用于对结果进行排序。
  • 1
  • 2

2.3、Stack 
由于stack在当初设计时候有缺陷,所以现在不建议使用stack,如果要使用栈这种数据结构,建议使用LinkedList,LinkedList能够直接实现栈的所有功能和方法,所以建议使用LinkedList.

2.4、Queue 
队列是一种先进先出的容器,LinkedList实现了queue接口,所以可以通过向下转型来通LinkedList构造queue

Queue<Integer> queue= new LinkedList<Integer>();
  • 1

其类图关系如下: 
这里写图片描述

3、Map容器 
Map。一组成对的“键值对”对象,允许你使用键查找值。 
常用实现有

HashMap   效率高、线程不安全(常用)Hashtable 效率低、线程安全TreeMap   用于排序
  • 1
  • 2
  • 3

其类图关系如下: 

4、Iterator 和iterable区别 
Iterator是迭代器类,而Iterable是接口。 
引入迭代器这个对象的目的是为了从一个collection或者Map的对象中取数据,而不必关心取数据的具体底层实现,如在List中add()和get()分别是插入元素和取出元素,而在Map中put(),才是插入元素,迭代器是一个对象,其目的是遍历和取出序列中的对象。而客户端程序员不必知道该序列底层是通过Set、List还是Map实现。 
Iterator的功能:

1、使用iterator()方法要求返回一个iterator2、使用next() 获得序列中下一个元素3、使用hasNext()检查序列中是否还有元素4、使用remove删除迭代器新近返回的元素
  • 1
  • 2
  • 3
  • 4

用法如下:

List<integer> list= new ArrayList<Integer>();Iterator<Integer> it=list.iterator();
  • 1
  • 2
  • 3

而对于iterable,任何实现iterable接口的类都可以使用迭代器进行遍历。

5、Collection和Collections区别 
java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。

java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。


阅读全文
0 0
原创粉丝点击