集合框架被设计成要满足以下几个目标。

  • 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

  • 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

  • 对一个集合的扩展和适应必须是简单的。

1   Collection

  【1】Collection是java集合框架(collection-frame)中的顶层接口。

  【2】Collection接口表示一个容器,容器中只能存储引用数据类型,建议存同一类型的引用类型,方便后续遍历等操作。

  【3】List接口中容器中的元素可以是有序的、可重复的,称为。

      Set接口中也可能是无序的、唯一的。

   特点:

   1     集合常用方法

   增(add     addAll)    删(clear  remove  removeAll  retainAll)    改:()  查:(contains  containsAll  isEmpty  size)

    2    集合的遍历

     Iterable 可遍历的接口,集合接口继承于它,集合支持快速遍历

   Collection继承Iterable接口,表示集合支持快速遍历

     // 快速遍历
// for-each
// Object 表示元素类型
// item表示迭代变量
// c1表示集合
for (Object item : c1) {
System.out.println(item.toString());

    Iterator接口类型,iterator()内部返回一个实现类实现类Iterator接口。这个实现类一定具有hasNext和next方法用于判断是否有下一个元素和获取下一个元素。快速遍历就是基于迭代器工作的。

// 迭代器遍历(国内)
Iterator it = c1.iterator();
while(it.hasNext()) {
Object item = it.next();
System.out.println(item.toString());
}
// 国外
for(Iterator it2=c1.iterator();it2.hasNext();) {
Object item = it2.next();
System.out.println(item.toString());
}

  3  List接口

     特点:List 接口中的元素时有序的、可重复的。

       List基本常用方法

           增:       add()             addAll()     add(index,el)      addAll(index,collection)

删:       clear()           remove()   removeAll()        remove(index)

改:       set(index,el)

     查        get(index)     indexOf()        lastIndexOf()

       List接口遍历

        ListIterator 继承于Iterator,在Iterator的基础上提供了以正向遍历集合,也可以以逆序遍历集合。

        hasNext()   next ()以正向遍历

        hasPrevious()   previous ()以逆序遍历

    // 正向遍历
ListIterator it2 = list1.listIterator();
while(it2.hasNext()) {
System.out.println(it2.next());
} // 逆序遍历
while(it2.hasPrevious()) {
System.out.println(it2.previous());

    List接口实现类

     ArrayList 

       【1】是List接口的实现类,底层数据结构是数组,实现大小可变的数组     

       【2】线程不安全,jdk1.2

       【3】默认数组大小是10。自动拓容,拓容原则:newCapacity = oldCapacity + oldCapacity / 2

       【4】如果确定序列的元素不在增加,通过调用trimToSize()调制容量至合适的空间

       Vector  

       【1】是List接口的实现类,底层数据结构也是数组,也是大小可变的数组。

       【2】是线程安全的,jdk1.0

       【3】默认数组大小是10。自动拓容,拓容原则:newCapacity = oldCapacity +capacityIncrement(增长因子)                          

       【4】通过调用trimToSize()调制容量至合适的空间

           注意:Vector 在实现List接口的同时,同添加了自身特有的方法xxxElement,未来使用时为了程序的可拓展性

    LinkedList

       【1】是List接口的实现类,底层数据结构是链表。

       【2】线程不安全。

       【3】push入栈操作 / pop出栈操作

       【4】队列(Queue)接口add 入栈操作 remove出栈操作  element()  获取表头元素 可能会出现NoSuchElementException异常

       【5】队列(Queue)接口offer入栈操作poll出栈操作peek()获取表头元素 可能会返回特殊值(null)

       【6】双向队列(Deque)接口

              

Java 集合框架_上的更多相关文章

  1. 浅入深出之Java集合框架(上)

    Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...

  2. Java 集合框架_下

    Map接口 特点: [1]Map接口称为键值对集合或者映射集合,其中的元素(entry)是以键值对(key-value)的形式存在. [2]Map 容器接口中提供了增.删.改.查的方式对集合进行操作. ...

  3. Java 集合框架_中

    Set接口 特点: [1]Set接口表示一个唯一.无序的容器(和添加顺序无关) Set接口常用实现类有 HashSet [1]HashSet是Set接口的实现类,底层数据结构是哈希表. [2]Hash ...

  4. 浅入深出之Java集合框架(中)

    Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...

  5. 浅入深出之Java集合框架(下)

    Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...

  6. [转]Java - 集合框架完全解析

    数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...

  7. Java - 集合框架完全解析

    来自:http://www.jianshu.com/p/63e76826e852 数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织 ...

  8. 【深入理解Java集合框架】红黑树讲解(上)

    来源:史上最清晰的红黑树讲解(上) - CarpenterLee 作者:CarpenterLee(转载已获得作者许可,如需转载请与原作者联系) 文中所有图片点击之后均可查看大图! 史上最清晰的红黑树讲 ...

  9. 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射

    从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...

随机推荐

  1. 如何阻止<a>标签的页面跳转

    当页面中a标签不需要执行任何页面跳转行为时: 1.标签属性href,使其指向空或不返回任何内容 <a href="javascript:void(0);" >页面不跳转 ...

  2. gitlab web客户端的使用

    3.2.1 新建项目 3.2.2 初始化项目(git init) 正如上图显示的,gitlab会给我们相应的命令供我们使用(需要安装客户端).初始化一个项目可以是一个新建的空项目,也可以是一个已经存在 ...

  3. 安居客scrapy房产信息爬取到数据可视化(下)-可视化代码

    接上篇:安居客scrapy房产信息爬取到数据可视化(下)-可视化代码,可视化的实现~ 先看看保存的数据吧~ 本人之前都是习惯把爬到的数据保存到本地json文件, 这次保存到数据库后发现使用mongod ...

  4. P1089津津的储蓄计划

    题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在 ...

  5. ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps (线段树:无序数组找到第一个小于val)

    题意:n个房间,每个房间有ai盏旧灯,每个月可以买m盏新灯,要求:按房间顺序换灯,如果剩下的新灯数目大于ai,那么进行更换,否则跳过该房间,判断下一个房间.如果所有房间都换完灯,那么久不会再买新灯. ...

  6. docker镜像的分层结构三

    docker的镜像分层 docker里的镜像绝大部分都是在别的镜像的基础上去进行创建的,也就是使用镜像的分层结构. 实验 比如说使用dockerfile去创建一个最简单的hello镜像.创建好对应的d ...

  7. FileTest

    package com.yd.wmsc.util; import java.io.File; public class FileTest { public static void main(Strin ...

  8. 多级联动的select框

    JS文件: ; (function($, w) { var LinkSelect = function(config) { var opt = { doms: config.doms || [], u ...

  9. 【手撸一个ORM】第七步、SqlDataReader转实体

    说明 使用Expression(表达式目录树)转Entity的文章在园子里有很多,思路也大致也一样,我在前面有篇文章对解决思路有些说明,有兴趣的小伙伴可以看下 (传送门),刚接触表达式目录树时写的,不 ...

  10. linux目录权限

    linux中,有三种不同类型的用户可以对文件或目录进行访问:文件所有者,同组用户,其他用户.所有者一般是文件的创建者,文件所有者自动拥有对该文件的读.写和可执行权限.所有者能允许同组用户有权访问文件, ...