------- android培训、java培训、期待与您交流! ----------

在集合框架中,最顶层的是Collection,它有两个子接口,List和Set

在List和Set接口下,又有很多特殊的容器。因为每一个容器对数据的存储方式都有不同。这个存储方式称之为:数据结构。自身具备的特点不同。

作为一个集合,应该具有的方法:增删改查

在collection中,存在这样一些抽象方法

add(),增加一个元素

addAll(),一次增加一堆元素(实现并集)

remove 删除一个元素

removeAll 删除一堆元素(实现差集)A-B

retainAll 保留两个集合中共有的元素。交集

在集合中存储的都是对象的引用(地址)。

当我们取出元素中的集合时候,就可以使用迭代器,其实就是集合取出元素的方式

每个集合中有各自特定的取出方式,也就有一个特定的迭代器。取出这个类就定义在集合的内部。也就是用来取元素,在集合内部操作,这个迭代器内部类抽取了一些共性的方法,叫做Iterator接口,这个接口定义了抽象的方法,在各自不同的数据结构中,取出和判断的方式不同,故各个数据结构实现了自己特定的迭代器对象。可以使用  数据结构对象.iterator();得到其内部实现的迭代器。

Collection中

List:元素是有序的,元素可以重复。因为该集合体系有索引。可以在指定位置对元素进行操作。凡是带角标的,都是该集合下特有的操作方式。

Set:元素是无序的,元素不可以重复。

ArrayList<String>al  = newArrayList<String>();

al.add("01");

al.add(0,"dsf2");

ArrayList<String> al1 = newArrayList<String>();

al1.add("fds0");

al1.add("dfs1");

al.addAll(0,al1);

al.remove(0);

al.set(0,"nihao");

al.get(0);

System.out.println(al.subList(0,2));

System.out.println(al);

需求:现在要使用迭代器去集合中的元素取出,并进行一些操作。

但是,我们在使用迭代器操作集合对象的时候,再使用集合对象对元素进行操作

会出现并发操作的安全隐患。不能对同一个集合,进行多种同时操作,不能既使用集合,又使用迭代器操作同一组元素。

列表迭代器:

Remove从列表中移除由 nextprevious 返回的最后一个元素(可选操作)。

也就是删除next得到的那个元素,不能同时使用两次remove。

List集合特有的迭代器,ListIterator是Iterator子接口。

在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生并发修改异常。

所以在迭代时候,只能用迭代器的方法操作元素,可以iterator方法有限。

只能对元素进行判断,取出,删除的操作。

如果想要其他的操作,如添加,修改,就需要使用子接口。

该接口通过List.ListIterator()方法获取。

特点:在遍历过程中的增删改查。。。。十分的重要

ArrayList的特点:查询,修改速度很快,但是增加,删除元素很慢。线程不同步

LinkedList:增删的速度很快,查询比较慢

Vector :底层是数组数据结构,线程同步。

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/07/3003872.html

黑马程序员_集合学习1相关推荐

  1. 黑马程序员_集合总篇_基础之重点

    ------- <a href="http://www.itheima.com" target="blank">android培训</a> ...

  2. 黑马程序员_集合框架

    ------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 集合框架 数组和集合 数组虽然也可以存储对象,但长度是固定的:集合长度可变的. 数组中可 ...

  3. 黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

    黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合 ...

  4. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  5. 黑马程序员Java教程学习笔记(三)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...

  6. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

  7. 黑马程序员_石头迷阵小游戏

    黑马程序员_石头迷阵小游戏 源代码 一些说明: 1)这些是我看b站黑马程序员的视频,自己手打的,想分享一下,如果有侵权啥的请联系我,马上删除 2)一些比较重要的我都有给注释 3)工具idea idk版 ...

  8. 黑马程序员_异常(老毕视频总结及《疯狂java》补充)

    ----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+A ...

  9. 黑马程序员 c++视频学习详细笔记 下载地址

    黑马程序员 c++视频学习详细笔记 下载地址: https://download.csdn.net/download/m0_47891203/84348174 建议结合博主博文学习

最新文章

  1. 介绍求解AX=b:可解性与解的结构
  2. react学习系列之states与props
  3. 零配置 之Spring基于Java类定义Bean配置元数据
  4. Java 并发编程AQS--源码解读
  5. Maven 仓库、镜像
  6. 物主代词-mine、yours_33
  7. 实例解说 fdisk 使用方法
  8. js TextArea获取光标详解说明与实例
  9. 借助百度识图爬取数据集
  10. 2020年下系统集成项目管理工程师真题基础知识+解析1/3
  11. 【配置管理】配置审核-物理配置审核-功能配置审核-配置管理审核
  12. 中|元宇宙龙头股歌尔自废,资本为何还在追捧
  13. 试用bus hound来分析STM32CubeMX来生成USB_HID_Mouse工程
  14. 2014年度江西省科学技术奖授奖项目名单
  15. codeforces 884F 费用流,图解很清晰
  16. oracle表空间不足影响,oracle表空间不足
  17. QLU_ACM 2021 专题训练(一)题解 [暴力、排序、贪心、二分]
  18. C# 实现xls类型转换为xlsx类型
  19. Pycharm导入scap包提示出错
  20. Python基础与拾遗9:Python中的函数与作用域

热门文章

  1. ssh ip登录缓慢问题解决
  2. MySQL sql_cache缓存使用
  3. Oracle 创建函数的权限
  4. 议rman的crosscheck和obsolete
  5. 23-Python3 File
  6. poj3683 Priest John's Busiest Day
  7. Mantis安装过程笔记
  8. 算法——海量数据(5%)
  9. 【OpenCV学习】Cuda-OpenCV-Image-Filter
  10. 戏说模式-追MM与设计模式 (转载)