1.集合中添加另一个集合的方法:

(1).Collection.addAll(被添加的Collection对象)方法:

如:list1.addAll(list2);

(2).Collections.addAll(添加到的目标Collection对象,可变参数的集合或者对象)方法:

如:Collections.addAll(list1, new Object1(), new Object2()…);

Collectionns.addAll(list1, list2…);

注意:Collections是java集合容器的工具类,相比于(1),使用Collections的(2)更灵活。

2.Java集合中常用的交集、并集和差集操作:

并集:collection对象1.addAll(collection对象2);

交集:collection对象1. retainAll(collection对象2);

差集:collection对象1. removeAll(collection对象2);

注意:上述的集合操作时,集合元素的equals方法会影响操作结果。

3.将其他类型集合转换为List:

Arrays.asList(非List类型的集合对象/可变参数的对象);方法可以将传递的参数转变为List集合。如:Arrays.asList(new Object1(),new Object2(),…);

Arrays和Collections类似,是Array数组类型集合的工具类。

注意:Arrays.asList()方法转换后的List对象是一个size不能改变的对象,如果对该对象做增加或者删除元素操作时,将会报不支持的操作异常。

4.List集合:

List集合主要有两种具体的集合容器:ArrayList和LinkedList。

(1).ArrayList:底层实现是数组,提供了根据数组下标快速随机访问的能力,但是增加和删除元素时因为需要引动数组的元素,因此比较慢。

(2).LinkedList:底层实现是链表,链表访问元素时必须从链表头至链表尾挨个查找,因此只能顺序访问,速度比随机访问要慢。但是增加和删除元素时,只需要修改链表的指针而不需要移动元素,因此速度比较快。

5.LinkedList:

LinkedList除了实现了基本的List接口以外,还提供了一些特定的方法,使得LinkedList可以方便地实现Stack、Queue以及双端Queue的功能。

LinkedList提供的非List接口方法:

(1).getFirst():获取并且不移除LinkedList集合中第一个元素。如果集合为空,抛出NoSuchElementException异常。

(2).element():获取并且不移除LinkedList集合中第一个元素。如果集合为空,抛出NoSuchElementException异常。

(3).peek():获取并且不移除LinkedList集合中第一个元素。如果集合为空,则返回null。

(4).removeFirst():获取并且移除LinkedList集合中第一个元素。如果集合为空,抛出NoSuchElementException异常。

(5).remove():获取并且移除LinkedList集合中第一个元素。如果集合为空,抛出NoSuchElementException异常。

(6).poll():获取并且移除LinkedList集合中第一个元素。如果集合为空,则返回null。

(7).addFirst():向LinkedList集合的头部插入一个元素。

(8).add():向LinkedList集合的尾部插入一个元素。

(9).offer():向LinkedList集合的尾部插入一个元素。

(10).removeLast():获取并且移除LinkedList集合中最后一个元素。如果集合为空,抛出NoSuchElementException异常。

6.Iterator:

Iterator迭代器在java集合容器中应用比较广泛,对于List类型的集合,可以通过下标索引值获取到指定的元素,而对于Set类型的集合,因为Set是没有索引的,因此只能通过迭代器来遍历。

Iterator迭代器是一个顺序选择和遍历集合元素的对象,使用者不需要关心其底层的数据结构和实现方式。Java中的Iterator迭代器是单向的。

Iterator的常用方法如下:

(1).collection对象.iterator()方法:将集合对象转换为Iterator迭代器。

(2).iterator对象.hasNext()方法:判断迭代器中是否还有元素。

(3).iterator对象.next()方法:获取迭代器中下一个元素。
(4).iterator对象.remove()方法:删除迭代器中当前元素。

注意:使用迭代器的好处是,当数据结构从List变为Set之后,迭代集合的相关代码一点都不用改变。

7.ListIterator:

ListIterator是Iterator的子类,它只能有List类型的集合产生,ListIterator是一个双向的迭代器,即它可以向前和向后双向遍历集合。ListIterator的常用方法如下:

(1).list类型对象.listIterator():将List类型的集合转换为ListIterator迭代器。

(2).list类型对象.listIterator(int n):将List类型的集合转换为ListIterator迭代器,同时指定迭代器的起始元素为第n个元素。

(3).listIterator对象.hasNext():判断迭代器中是否还有下一个元素。

(4).listIterator对象.next():获取迭代器中的下一个元素。

(5).listIterator对象.hasPrevious():判断迭代器中是否还有前一个元素。

(6).listIterator对象.previous():获取迭代器中的前一个元素。

(7).listIterator对象.set(元素对象):将当前迭代到的元素设置为另一个值。

8.Map遍历3中方法:

Map<String, Object>map = new HashMap<String, Object>();

map.put(“test1”, object1);

……

map.put(“testn” , objectn);

(1).Map的values()方法可以获取Map值的集合:

[java] view plaincopy
  1. Iterator it = map.values().iterator();
  2. while(it.hasNext()){
  3. Object obj = it.next();
  4. }

(2).Map的keySet方法可以获取Map键的Set集合:

[java] view plaincopy
  1. Set<String> keys = map.keySet();
  2. for(Iterator it = key.iterator(); it.hasNext(); ){
  3. String key = it.next();
  4. Object obj = map.get(key);
  5. }

(3).通过使用Entry来得到Map的key和value:

[java] view plaincopy
  1. Set<Map.Entry<String, Object>> entrySet = map.entrySet();
  2. for(Iterator <Map.Entry<String, Object>> it = entrySet.iterator(); it.hasNext(); ){
  3. Map.Entry<String, Object> entry = it.next();
  4. String key = entry.getKey();
  5. Object value = entry.getValue();
  6. }

9.Collection和Iterator:

Collection是java中除了Map以外的集合容器的通用接口,如果想自定义一种集合容器类型的类,可以选择实现Collection接口或者继承Collection的子类。

实现Collection接口或者继承Collection子类的时候,必须实现Collection接口的所有方法,而Iterator为定义自定义集合容器类型提供了另一种方便,Iterator是一种轻量级的接口,只需要实现hasNext(),next()方法即可,remove()方法是可选方法。

注意:Foreach循环支持所有实现了Iterable接口的集合容器(Collection接口的父接口是Iterable),Map集合没有实现Iterable接口,因此不支持Foreach循环。

10.java集合容器框架图:

《Java编程思想》学习笔记4——集合容器相关推荐

  1. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  2. Java编程思想学习笔记4 - 序列化技术

    今天来学习下Java序列化和反序列化技术,笔者对<Java编程思想>中的内容,结合网上各位前辈的帖子进行了整理和补充,包括: 序列化概述 Java原生序列化技术 Hessian序列化技术 ...

  3. JAVA编程思想学习笔记——第一章 对象导论

    搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的 ...

  4. Java编程思想 学习笔记1

    一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...

  5. Java编程思想 学习笔记7

    七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...

  6. java编程思想 学习笔记(2)

    第二章     一切都是对象 用引用(reference)操纵对象 String s = "asdf"; String s; 但这里所创建的只是引用,并不是对象.如果此时向s 发送 ...

  7. java编程思想学习笔记(第七章:复用类)

    复用代码是java众多引人注目的功能之一.但是要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. 7.1组合语法 将对象引用置于新类中.每一个非基本类型的对象 ...

  8. 01.Java 编程入门学习笔记20210307

    Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...

  9. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

最新文章

  1. python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...
  2. Python内置类型——list
  3. php中类的构造函数是,php类与构造函数解析
  4. 两个excel文档查找相同选项后替换_看似普通的查找和替换功能,用好了,能让你的工作效率翻一番...
  5. jquery数组怎么传给后台_我是如何让公司后台管理系统焕然一新的(下)封装组件...
  6. java线程池原理简答_面试官让我讲讲Java线程池的实现原理,我笑了...
  7. 电脑故障维修判断指导大全(联想内部文件)[网络转载]
  8. dataframe保存为txt_如何快速将TXT转换为SRT文件
  9. 泰拉瑞亚服务器云存档文件夹,泰拉瑞亚助手常见问题 存档等问题解决方法
  10. flex布局中的自动占满剩下的内容
  11. Linux 启动jar项目相关命令(解决关闭Linux终端,程序自动停止问题)
  12. 京东店铺如何做好关联销售?
  13. Postman安装出错.NET Framework 4.5 failed to install
  14. 信息系统工程工程监理将迎来新的发展机遇
  15. matlab分形图 经典的,分形几何中一些经典图形的MATLAB画法
  16. 2021致自己一段话真实的话
  17. 关于execel单元格中的数字变成文本(左上角带绿色三角形标志)的办法
  18. html5 中的solid,图解你身边的 SOLID 原则
  19. 怎么找回电脑误删的文件方法汇总
  20. Hx711称重模块+STM32+CubeMX

热门文章

  1. 【商务智能】数据仓库 ( 多维数据模型 | 多维数据分析 )
  2. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
  3. 生产者与消费者(二)---await与 signal
  4. Ext JS 6学习文档-第3章-基础组件
  5. HTML5全局属性和事件
  6. QLibrary执行load失败
  7. php的session实现
  8. 周记 2014.11.29
  9. 前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节
  10. 去掉字符串里特殊字符的正则表达式方求