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

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

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

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

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. java排序算法(持续更新)

    package exception; import java.util.Arrays; public class Sort { public static void main(String[] arg ...

  2. 数据绑定—Source(绑定到静态类的静态属性)

    <UserControl x:Class="绑定.绑定Source" xmlns="http://schemas.microsoft.com/winfx/2006/ ...

  3. “Enterprise Architect”和数据库的不解之缘

    前言 在这个大数据盛行的时代,和数据打交道变的必不可少了,所有如果有工具来规范我们的数据库会更加方便我们的生活.这次机房,我们利用EA(Enterprise Architect)自动生成SQL语句来达 ...

  4. 洛谷P3803 【模板】多项式乘法(FFT)

    P3803 [模板]多项式乘法(FFT) 题目背景 这是一道FFT模板题 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: ...

  5. Decorator模式(装饰器模式)

    Decorator模式? 假如现在有一块蛋糕,如果只涂上奶油,其他什么都不加,就是奶油蛋糕.如果加上草莓,就是草莓奶油蛋糕.如果再加上一块黑色巧克力板,上面用白色巧克力写上姓名,然后插上代表年龄的蜡烛 ...

  6. 08-图8 How Long Does It Take (25 分

    Given the relations of all the activities of a project, you are supposed to find the earliest comple ...

  7. python入门之sys模块、shutil模块

    sys模块 import sys sys.version 返回python的版本 sys.argv 返回一个以脚本名,和传入的参数作为元素的列表 sys.path 返回一个以当前代码文件路径,pyth ...

  8. new 和 delete 用法

    1. 这两个其实是 C++ 语言标准库的库函数,原型分别如下: void *operator new(size_t); //allocate an object void *operator dele ...

  9. CentOS安装MySQL,(常规安装方式MySQL无法远程连接)

    转载自:https://blog.csdn.net/z13615480737/article/details/78906598 CentOS7默认数据库是mariadb, 但是 好多用的都是mysql ...

  10. hdu 5489——Removed Interval——————【删除一段区间后的LIS】

    Removed Interval Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...