集合框架,未完

集合类的由来:
对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储。

集合特点:
1,用于存储对象的容器。(存的是对象的地址)
2,集合的长度是可变的。
3,集合中不可以存储基本数据类型值。 (只能存对象)



Collection子接口

Collection接口
  |--List接口:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。
  |--Set接口:无序,元素不能重复。

List

有一个共性特点就是都可以操作角标,list集合可以完成对元素的增删改查。



Iterator接口

对 collection 进行迭代的迭代器,即对所有的Collection容器进行元素取出的公共接口。

该迭代器对象必须依赖于具体容器,因为每一个容器的数据结构都不同,所以该迭代器对象是在具体容器中进行内部实现的。(内部类,可以看具体容器的源码)

对于使用容器者而言,具体的实现方法不重要,只要通过具体容器获取到该实现的迭代器的对象即可,也就是iterator方法,而不用new。(Iterator<String> ite=list.iterator();)

小知识:使用迭代器过程中while和for的区别

 1 第一种
 2 Iterator<String> ite=list.iterator();
 3      while(ite.hasNext())//判断下一个元素之后有值
 4      {
 5          System.out.println(ite.next());
 6      }
 7 第二种
 8 Iterator<String> ite=list.iterator();
 9 for(Iterator it = coll.iterator(); it.hasNext(); ){
10             System.out.println(it.next());
11         }

第一种方法while循环结束后迭代器对象还在内存中存在,还能继续使用迭代器对象。

第二种方法for循环结束后迭代器对象就消失了,清理了内存,开发中第二种常用。

Iterator子接口

  |--ListIterator接口(列表迭代器)

适用情况例子:(出现ConcurrentModificationException异常时)

出现异常情况代码:

Iterator it = list.iterator();
        while(it.hasNext()){

            Object obj = it.next();//java.util.ConcurrentModificationException
                            //在使用迭代器的过程中使用集合操作元素,容易出现异常。
                        //可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作。 

            if(obj.equals("abc2")){
                list.add("abc9");
            }
            else
                System.out.println("next:"+obj);
        }
        System.out.println(list);

  

解决办法代码:

public static void main(String[] args) {

        List list = new ArrayList();
        list.add("abc1");
        list.add("abc2");
        list.add("abc3");

        System.out.println("list:"+list);
        ListIterator it = list.listIterator();//获取列表迭代器对象
        //它可以实现在迭代过程中完成对元素的增删改查。
        //注意:只有list集合具备该迭代功能.

        while(it.hasNext()){
            Object obj = it.next();
            if(obj.equals("abc2")){
                it.add("abc9"); //ListIterator提供了add方法
            }
        }

  

时间: 2024-10-19 02:14:55

集合框架,未完的相关文章

Java面试准备之探究集合(未完)

摘要:之前虽然对集合框架一些知识点作了总结,但是想想面试可能会问源码,于是又大致研究了一下集合框架的一些实现类的源码,在此整理一下. 一.集合框架 二.深究实现类 1.ArrayList源码实现 ArrayList内部维护了一个动态数组,如果没有显式的初始化的话,动态数组的默认容量是10,当数组容量已满时,每次将容量扩大至1.5倍加1. ArrayList的remove.add.clear等方法的实现原理都是对内部的Object数组进行操作,需要注意的是,在add方法执行前,都会提前对数组的容量

韩顺平循序渐进学java 第21讲 集合(未完待续)

21.1 引出问题 一个问题? 前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决? 请做一个公司职员薪水管理系统,要求完成如下功能: 1.当有新员工时,将该员工加入到管理系统: 2.可以根据员工号,显示该员工的信息: 3.可以显示所有员工信息: 4.可以修改员工的薪水: 5.当员工离职时,将该员工从管理系统中删除: 6.可以按照薪水从低到高顺序排序: 7.可以统计员工的平均工资.最低和最高工资. 解决之道-链表或集合类: 我们想,

Java集合框架(一)

Java集合框架结构图完整版 在完整版的结构图中Collection集合和Map下有许多未实现的抽象类(AbstractCollection.AbstractMap等等).下面整理一个简化版的,去除了一些不常用的子类和中间的一些抽象类. Java集合框架结构图简化版 说集合之前先来讲讲对象数组: 对象数组: 数组可以储存基本类型和引用类型,储存引用类型的数组叫对象数组(案例:用数组储存10个Animal类对象) 集合(Collection): a)集合的由来: Java语言是面对对象语言,需要操

JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用

JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据类型也是可以引用的 一.基本数据类型的对象包装类 左为基本数据类型,又为引用数据类型 byte Byte int Integer long Long boolean Booleab float Float double Double char Character 我们拿Integer来举例子 //整

JAVA集合框架

收藏 查看我的收藏 146有用+1 56 编辑 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态的Web.Internet计算.从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet.集合框架是为表示和操作集合而规定的一种统一的标准的体系结构.任何集合框架都包含三大块内容:对外的接口.接口的实

解析java集合框架

在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework). Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了.这样就大大提高了编程效率. Java类集框架的优势:        1) 这种框架是高性能的.对基本类集(动态数组,链接表,树和散列表)的实现是高效率的.一般很少

JAVA 笔记(三) 从源码深入浅出集合框架

集合框架概述 以Java来说,我们日常所做的编写代码的工作,其实基本上往往就是在和对象打交道. 但显然有一个情况是,一个应用程序里往往不会仅仅只包含数量固定且生命周期都是已知的对象. 所以,就需要通过一些方式来对对象进行持有,那么通常是通过怎么样的方式来持有对象呢? 通过数组是最简单的一种方式,但其缺陷在于:数组的尺寸是固定的,即数组在初始化时就必须被定义长度,且无法改变. 也就说,通过数组来持有对象虽然能解决对象生命周期的问题,但仍然没有解决对象数量未知的问题. 这也是集合框架出现的核心原因,

【java集合框架源码剖析系列】java源码剖析之TreeMap

注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本.本博客将从源码角度带领大家学习关于ArrayList的知识. 一TreeMap的定义: public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable 可以看到TreeMap是继承自AbstractMap同时实现了NavigableMap,

java集合框架详解(一)

1.为什么有java集合框架 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的接口.类来实现基本的数据结构.这些类均在java.util包中.在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework). Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对

这几道Java集合框架面试题几乎必问

Arraylist 与 LinkedList 异同 补充:数据结构基础之双向链表 ArrayList 与 Vector 区别 HashMap的底层实现 JDK1.8之前 JDK1.8之后 HashMap 和 Hashtable 的区别 HashMap 的长度为什么是2的幂次方 HashMap 多线程操作导致死循环问题 HashSet 和 HashMap 区别 ConcurrentHashMap 和 Hashtable 的区别 ConcurrentHashMap线程安全的具体实现方式/底层具体实现