概述

  集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

  1. 接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
  2. 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
  3. 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

集合接口

  继承的接口列表如下

序号 接口描述
1

Collection 接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

2

List 接口
List接口是一个有序的Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的小标)来访问List中的元素,而且允许有相同的元素。

3

Set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

4

SortedSet
继承于Set保存有序的集合。

5

Map
将唯一的键映射到值。

6

Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。

7

SortedMap
继承于Map,使Key保持在升序排列。

8

Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

继承接口类

  实现接口的集合类如下。枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。hasMoreElements()返回是否还有值,nextElement()获取下一个对象。Vector大小能根据需要动态的变化。通过elements()获取Enumeration对象。栈(Stack)实现了一个后进先出(LIFO)的数据结构.Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。通过keys()获取Enumeration对象。Properties 继承于 Hashtable.Properties 类,表示了一个持久的属性集。getProperty(str)获取对象。属性列表中每个键及其对应值都是一个字符串。keySet()获取set对象,Iterator itr=states.iterator();itr.hasNext()获取是否下一个对象,通过itr.next()获取下一个值。

序号 类描述
1

AbstractCollection
实现了大部分的集合接口。

2

AbstractList
继承于AbstractCollection 并且实现了大部分List接口。

3

AbstractSequentialList
继承于 AbstractList ,提供了对数据元素的链式访问而不是随机访问。

4

LinkedList
该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,

解决方法就是在创建List时候构造一个同步的List。例如:Listlist=Collections.synchronizedList(newLinkedList(...));LinkedList 查找效率低

5

ArrayList
该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入

删除效率低。

6

AbstractSet
继承于AbstractCollection 并且实现了大部分Set接口。

7

HashSet
该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。

8

LinkedHashSet
具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。

9

TreeSet
该类实现了Set接口,可以实现排序等功能。

10

AbstractMap
实现了大部分的Map接口。

11

HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

12

TreeMap
继承了AbstractMap,并且使用一颗树。

13

WeakHashMap
继承AbstractMap类,使用弱密钥的哈希表。

14

LinkedHashMap
继承于HashMap,使用元素的自然顺序对元素进行排序.

15

IdentityHashMap
继承AbstractMap类,比较文档时使用引用相等。

使用实例

public static void EnumArrayList()
{
List<String> _list=new ArrayList<String>();
_list.add("Hello");
_list.add("World");
for(String str:_list)
{
System.out.println(str);
} Iterator<String> ite=_list.iterator();
while(ite.hasNext())
{
System.out.println(ite.next());
} Map<String,String> map=new HashMap<String,String>();
map.put("", "value1");
map.put("", "value2");
map.put("", "value3");
// Set stet=map.keySet();
// Iterator stor=stet.iterator();
// while(stor.hasNext())
// {
// String valekey=(String)stor.next();
// System.out.println(valekey+":"+map.get(valekey));
// }
// for(String key:map.keySet())
// {
// System.out.println("key= "+ key + " and value= " + map.get(key));
// } for(String v:map.values())
{
System.out.println("value= " + v);
} Iterator<Map.Entry<String, String>> it=map.entrySet().iterator();
while(it.hasNext())
{
Map.Entry<String, String> entry=it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
} }

Java基础知识➣集合整理(三)的更多相关文章

  1. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  2. Java基础知识学习(三)

    面向对象部分 首先要了解面向对象的思想,与C#一致,都是面向对象的语言 访问修饰符 public 共有的,对所有类可见. protected 受保护的,对同一包内的类和所有子类可见. private ...

  3. Java基础知识--集合

    集合类 数组和集合的比较:数组可以存储对象,也可以存储基本数据类型,但是缺点就是长度固定,不能改变:集合长度是可变的,但是集合只能存储对象,集合可以存储不同类型的对象. Java容器类库一共有两种主要 ...

  4. Java基础——List集合整理(脑图,源码,面试题)

    常在知乎牛客网关注Java的一些面试,了解过校招社招常面哪些内容.Java集合不仅使用频率高而且在初面中也常常被问到,何止是常常,关于ArrayList的扩容,HashMap的一些底层等等都被问到烂了 ...

  5. Java基础知识拾遗(三)

    集合框架 SortedSet接口,声明了以升序进行排序的行为. Queue接口,声明了队列行为,队列通常是先进先出的列表 Deque接口,扩展了Queue接口,声明了双端队列的行为.双端队列可以像标准 ...

  6. Java基础知识笔记(三:文件与数据流)

    一.输入流与输出流 输入流将数据从文件.标准输入或其他外部输入设备中加载到内存.输出流的作用则刚好相反,即将在内存中的数据保存到文件中,或传输给输出设备.输入流在Java语言中对应于抽象类java.i ...

  7. JAVA基础知识之多线程——三种实现多线程的方法及区别

    所有JAVA线程都必须是Thread或其子类的实例. 继承Thread类创建线程 步骤如下, 定义Thead子类并实现run()方法,run()是线程执行体 创建此子类实例对象,即创建了线程对象 调用 ...

  8. JAVA基础知识总结:三

    一.Java语句的执行结构 1.顺序语句 按照顺序从上往下依次执行的语句,中间没有任何的判断和跳转 2.分支语句 根据不同的条件来产生不同的分支 if语句.switch语句 3.循环语句 重复执行某句 ...

  9. Java基础知识盘点(三)- 线程篇

    创建线程的方式及实现 一.继承Thread类创建线程类 1.定义Thread的子类,并重写run方法,因为该方法的方法体就是代表了线程要完成的任务,因此run方法又叫做执行体. 2.创建Thread子 ...

随机推荐

  1. python3+selenium入门07-元素等待

    在使用selenium进行操作时,有时候在定位元素时会报错.这可能是因为元素还没有来得及加载导致的.可以等过元素等待,等待元素出现.有强制等待,显式等待,隐式等待. 强制等待 就是之前文章中的time ...

  2. Java的if判断对象为null时,null放在比较运算符的左边还是右边较好?

    如java中:if(name == null)和if(null == name)有什么讲究吗? 答:在java里面,它们是一样的.但是通常写为null == name.这其实是在C语言里面引申出来的. ...

  3. 使用percona-xtrabackup工具对mysql数据库的备份方案

    使用percona-xtrabackup工具对mysql数据库的备份方案 需要备份mysql的主机 172.16.155.23存放备份mysql的主机 172.16.155.22 目的:将155.23 ...

  4. ubuntu server 14.04 上安装jdk1.8

    ubuntu server 14.04 上安装jdk1.8 1.使用apt-get安装oracle-jdk安装oracle jdk sudo apt-get install python-softwa ...

  5. T-SQL ORDER BY子句 排序方式

    MS SQL Server ORDER BY子句用于根据一个或多个列以升序或降序对数据进行排序. 默认情况下,一些数据库排序查询结果按升序排列. 语法 以下是ORDER BY子句的基本语法. SELE ...

  6. Linux root密码忘记了怎么办?

    一.找回root密码: 1. 开机出现 Booting Red Hat Enterprise Linux Client (…) in 3 seconds … 按任意键进入menu菜单: 2. 选择当前 ...

  7. Solidworks设计电路外形导入AltiumDesigner

    将实际设计好的三维电路图的底板(单个零件模式下)轮廓另存为dwf或者dwg 这时候会出现一个选项框,需要进行一些设置 单位选择mm,这个按照自己的需求选择单位 单位映射选择为1mm,也就是1:1的比例 ...

  8. js用replaceAll全部替换的方法

    1 前言 js中字符串整体替换,只有自带的replace,并没有replaceAll,如果我们需要把字符串中的字符统一替换,可以用正则表达式,由于经常使用就在String直接加个原生方法,方便调用. ...

  9. vmware 下找不到ifcfg-eth0的问题

    找不大 eth0网卡,也就连不上网络,症状是ifconfig以后只现实lo,不显示eth0 ifconfig,显示的ip是ifcfg-lo的ip 解决办法 . 拷贝cp ifcfg-lo ifcfg- ...

  10. Synchronizing timer

    http://blog.csdn.net/zjq001x/article/details/53107159 集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存 ...