黑马程序员_集合学习1
------- 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从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。
也就是删除next得到的那个元素,不能同时使用两次remove。
List集合特有的迭代器,ListIterator是Iterator子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生并发修改异常。
所以在迭代时候,只能用迭代器的方法操作元素,可以iterator方法有限。
只能对元素进行判断,取出,删除的操作。
如果想要其他的操作,如添加,修改,就需要使用子接口。
该接口通过List.ListIterator()方法获取。
特点:在遍历过程中的增删改查。。。。十分的重要
ArrayList的特点:查询,修改速度很快,但是增加,删除元素很慢。线程不同步
LinkedList:增删的速度很快,查询比较慢
Vector :底层是数组数据结构,线程同步。
转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/07/3003872.html
黑马程序员_集合学习1相关推荐
- 黑马程序员_集合总篇_基础之重点
------- <a href="http://www.itheima.com" target="blank">android培训</a> ...
- 黑马程序员_集合框架
------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 集合框架 数组和集合 数组虽然也可以存储对象,但长度是固定的:集合长度可变的. 数组中可 ...
- 黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结
黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日 day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合 ...
- 黑马程序员Java教程学习笔记(五)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...
- 黑马程序员Java教程学习笔记(三)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...
- 黑马程序员——c语言学习心得——函数传递二维数组
黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化. 变量 ...
- 黑马程序员_石头迷阵小游戏
黑马程序员_石头迷阵小游戏 源代码 一些说明: 1)这些是我看b站黑马程序员的视频,自己手打的,想分享一下,如果有侵权啥的请联系我,马上删除 2)一些比较重要的我都有给注释 3)工具idea idk版 ...
- 黑马程序员_异常(老毕视频总结及《疯狂java》补充)
----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+A ...
- 黑马程序员 c++视频学习详细笔记 下载地址
黑马程序员 c++视频学习详细笔记 下载地址: https://download.csdn.net/download/m0_47891203/84348174 建议结合博主博文学习
最新文章
- 介绍求解AX=b:可解性与解的结构
- react学习系列之states与props
- 零配置 之Spring基于Java类定义Bean配置元数据
- Java 并发编程AQS--源码解读
- Maven 仓库、镜像
- 物主代词-mine、yours_33
- 实例解说 fdisk 使用方法
- js TextArea获取光标详解说明与实例
- 借助百度识图爬取数据集
- 2020年下系统集成项目管理工程师真题基础知识+解析1/3
- 【配置管理】配置审核-物理配置审核-功能配置审核-配置管理审核
- 中|元宇宙龙头股歌尔自废,资本为何还在追捧
- 试用bus hound来分析STM32CubeMX来生成USB_HID_Mouse工程
- 2014年度江西省科学技术奖授奖项目名单
- codeforces 884F 费用流,图解很清晰
- oracle表空间不足影响,oracle表空间不足
- QLU_ACM 2021 专题训练(一)题解 [暴力、排序、贪心、二分]
- C# 实现xls类型转换为xlsx类型
- Pycharm导入scap包提示出错
- Python基础与拾遗9:Python中的函数与作用域