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

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

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

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

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. 图解 SSH上传安装tomcat

    安装步骤: 1.SSH上传压缩包 2.[root@localhost soft]# tar  -zxvf apache-tomcat-7.0.61.tar.gz    //解压安装 解压结果 3.[r ...

  2. 洛谷P3396 哈希冲突(分块)

    传送门 题解在此,讲的蛮清楚的->这里 我就贴个代码 //minamoto #include<iostream> #include<cstdio> #include< ...

  3. QQ音乐MP3下载

    QQ音乐MP3下载 没错本次写的内容的对象是我们熟知的QQ Music. 本篇文章涉及内容包括:Python,爬虫,json解析,request 库的使用 缘起 前几天刷B站无意中又刷到了一首神曲,“ ...

  4. Object类、常用API

    Object类.常用API Object类.常用API Object类.常用API Object类.常用API Object类.常用API Object类.常用API

  5. SQL语法:MySQL系列之四

    一.SQL语言的简介和规范 ​ 是一种特定目的程序语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理. 20世纪70年代,IBM开发出SQL,用于DB2 ...

  6. jquery 中$.fn是什么意思

    $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc() 那么你可以这样子:$("#div").abc(); 通常使 ...

  7. 原生JS轮播-各种效果的极简实现(二)面向对象版本的实现和优化

    之前写了一篇原生JS轮播,不过是非面向对象的,并且也没有添加上自动轮播.这里来写一下如何优化和进阶. 这里简单地介绍一下之前的代码,这是html结构 <body> <div clas ...

  8. Ubuntu下nagios安装(来源官网)

    Ubuntu下nagios安装(来源官网) https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/toc.html h ...

  9. .netcore中无法使用System.Drawing --解决方案

    问题重现: 无法正常使用  解决方法: 安装System.Drawing.Common的NuGet就能正常使用了 操作之后: 这个是.netcoe中的解决办法,.net framework解决方案中添 ...

  10. 省选九省联考T2 IIIDX(线段树)

    题目传送门:https://www.luogu.org/problemnew/show/P4364 期中考后记:期中考刚考完,感觉不咋滴,年排第3.我抗压力太差了..期末得把rank1抢回来. 本来感 ...