------- android培训、java培训、期待与您交流! ----------
1.集合概述
专业的存储对象的容器.
具备增,删,查,改元素的操作.
集合的优点:
可以存储任意类型的元素(暂时的优点)
可以存储任意多个元素. 相对于传统的数据,集合更加的优秀.
2.集合体系之Collection
|---Collection(接口)
集合的顶层接口, 定义了集合的基本的规范.
定义方法, 规范了集合的行为.
增加:
boolean add(Object e)
一次添加一个元素
boolean addAll(Collection c)
批量添加,将c 集合中的所有元素添加到指定集合中.
删除:
void clear()
清空集合
boolean remove(Object o)
删除一个元素
boolean removeAll(Collection c)
批量删除, 将指定集合中包含c 集合中的所有元素删除.
查找:
int size()
获取集合的大小,元素的个数
isEmpty()
检测集合是否为空. 集合中没有元素了...
boolean contains(Object o)
检测集合中是否包含指定的元素.
boolean containsAll(Collection c)
检测集合中是否完全包含c 中的元素.
修改:
boolean retainAll(Collection c)
修改集合, 紧保留集合和c 中相同的元素.
取交集.
其他:
Object[] toArray()
集合转数组.
3. 集合体系之List(列表)
|---Collection(接口)
|---List (接口)
List 继承继承了Collection 接口.
List 是Collection 的子类. List 更强的,具备更多个方法...
找出List 集合中特有的方法:
List 就是依靠这些特殊的方法,实现自己的特性的...
增
void add(int index, Object element)
boolean addAll(int index, Collection c)
删
remove(int index)
查
get(int index)
int indexOf(Object o)
int lastIndexOf(Object o)
改
Object set(int index, Object element)
subList(int fromIndex, int toIndex)
List 集合的特有方法都是和角标有关的.
List 特点:
元素有序(存储有顺序,按照添加是的顺序存储),存储在List 集合中的元素都有角标. 元素可以重复.
元素有序,元素有角标,元素可以重复.
并测试...
4. 集合体系之ArrayList
学习集合的实现类,学习什么?
研究实现类的实现原理... 看源码...
基于该原理实现的实现类具备什么特点?
|---Collection(接口)
|---List (接口)
List 继承继承了Collection 接口.
特点: 角标,元素有序,元素可重复.
|---ArrayList(实现类)
一个类实现一个接口,要把接口中的所有方法(公共抽象的)都重写了
如果想要了解集合的实现的原理的,就需要集合的实现类.
特点: 底层是数组实现, 数组是一块连续的内存,通过角标可以实现快速的定位,查找很快.
但是增加和删除元素时,很慢, 元素的移动(增加和删除),和数组的扩容(增加元素,数组空间不足)
底层的数组的扩容,是以1.5倍扩容的...
总结: 查找快,增删慢.
在实际开发中,最为常见的一个集合...
|---LinkedList
|---Vector
|---Stack
练习题:
集合List
元素有角标,有序,元素可以重复.
既然元素可以重复, 编写程序去除ArrayList集合中存储的重复元素.
1. 元素是字符串对象.
2. 元素是自定义的对象.
ArrayList 集合:
contains方法底层使用元素的equals方法
以使用contains 检测集合中是否包含指定的元素.
但是如果元素是自定义对象话, contains 底层使用的元素的equals 方法进行检测的. 如果自定义对象没有重写equals, contains 方法不能正常工作了.
注意: 集合的equals 和元素的equals 是不同概念....
集合的equals 是比较集合是否相同.
元素(Car, String,)的equals
5. 集合之LinkedList
|---Collection(接口)
定义了集合体系的基本的规范
|---List(子接口)
特点: 元素有角标,元素有序的,元素可以重复.
|---ArrayList(实现类)
特点: 数组实现,查找快(内存地址连续,通过角标可以快速定位)
增删慢(元素的移动,数组的扩容)
|---LinkedList(实现类)
特点: 双向链表实现. 集合的每增加一个元素,创建出一个节点(Node)对象保存一个元素.
上一个节点会记录下一个节点的引用. 由于双向链表,下一个节点也会记录上一个节点的.
节点和节点的内存地址不连续, 查找很慢,增删快了...
注意: LinkedList 和数组没有任何关系.
特有方法:
由于双向的链表列表: 该集合操作集合的头和尾都很方便的...
addFirst
addLast
getFirst
getLast
removeFirst
removeLast
栈:
stack
先进后出,后进先出...
压栈
push()
弹栈.
pop()
队列
queue
先进先出.
拍对, 银行排号.
排队:
offer()
出队
poll
6.集合体系值Vector
缺陷:
JDK1.0 出现的.
具备自己特有方法,但是方法名太长.
底层也是数组实现, 数组在扩容是100% 扩容, 消耗内存..
该集合是同步(集合的方法都是同步方法),在单线程在操作新低.
解决:
JDK1.2 Java 设计了集合体系. Collection. 并设计出了ArrayList .
Vector 就被ArrayList 替代了.
ArrayList 有点:
方法名短.
虽然也是数组实现,但是扩容不再是100%
集合被设计为非不同的. 不再使用同步方法了. -> 提高性能.
注意: 如果ArrayList 遇到了多线程安全问题:
可以使用Collections.synchronizedList(List list); 将不同步的ArrayList 转换为同步的集合.
相关推荐
Java是世界上最流行的编程语言之一,尤其在...总结来说,"黑马程序员Javase笔记"涵盖了Java的基础语法、内存管理、面向对象编程、集合框架以及泛型和Map等内容,这些都是成为一名合格Java开发者必须掌握的核心知识。
### 黑马程序员_超全面的JavaWeb教程-视频+源码笔记 #### JavaWeb基础知识概览 在深入了解本教程之前,我们先来简要回顾一下JavaWeb的基础知识。JavaWeb是利用Java语言开发Web应用的技术集合。它主要包括Servlet、...
Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。
《黑马程序员_从零开始征服Android之旅(第二季)源码和笔记(上)》是一部针对初学者的全面Android开发教程,旨在帮助学员系统地掌握Android应用开发的基础知识和实战技巧。通过本教程的学习,你可以从理论出发,...
本资料集合了黑马程序员2016年关于Hibernate框架的深度讲解,涵盖了从基础到高级的各种知识点,旨在帮助开发者全面理解并熟练运用Hibernate。 在Day03的学习中,我们主要关注以下几个核心内容: 1. Hibernate配置...
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 ...
在B站黑马程序员的Python教程中,你将深入理解Python的基础概念,包括: 1. **变量与数据类型**:Python支持多种数据类型,如整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。此外,还有列表(list...
提供的图片文件1.PNG和2.PNG可能是课程中讲解的示例截图,视频下载地址.txt可能是用来获取配套的教学视频,而lesson可能是课程的源代码或者笔记文档。通过这些资源,学习者可以更加直观地理解和应用所学知识。在学习...
在"黑马程序员_Java基础辅导班教程课件[第01期]第4天"中,我们可以推测这是针对初学者的Java编程课程,旨在帮助学员掌握Java的基础知识。 在课程的第4天,可能讲解了以下核心概念: 1. **类(Class)**:`Demo.class...
本学习笔记由黑马程序员提供,旨在帮助初学者深入理解Java中的集合框架及其使用方法。 首先,我们来探讨“集合”的基本概念。在Java中,集合是一个对象容器,可以容纳多个元素,这些元素可以是任意类型的数据。Java...
《Hibernate技术深度剖析——基于黑马程序员2016版讲义与笔记》 Hibernate,作为Java领域中的一个著名持久化框架,为开发者提供了强大的对象关系映射(ORM)功能,极大地简化了数据库操作。本资料集是黑马程序员...
《2018年黑马程序员全套教程java基础第1天笔记+讲义》是一份针对初学者精心编排的Java编程教程,旨在帮助新手快速掌握Java编程的基础知识。本教程结合了JDK9的新特性以及IntelliJ IDEA的实用技巧,为学习者提供了一...
【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。
"黑马程序员java基础试题、笔记"这个压缩包资源为Java初学者和希望加入"黑马程序员"培训课程的学员提供了丰富的学习材料。这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须...
黑马程序员java培训就业班笔记:day16(集合框架基础总结)
本套教程“2018年黑马程序员全套Java教程”针对的是第二天的学习内容,主要涵盖了数据类型转换、算数运算符、比较运算符、逻辑运算符以及三元运算符,同时也涉及到了简单方法的定义与调用。这些知识点是Java编程的...
4. **集合与查找排序**:集合是一组不重复的元素,查找是指在数据结构中找到特定元素的过程,排序则是按照特定规则排列数据。 5. **存储结构**:包括顺序存储(如数组)和链式存储(如链表)。顺序存储中,元素存储...
《黑马程序员Hibernate框架开发2016版视频day1-day4源码笔记》是一份针对初学者和进阶者深入理解Hibernate框架的重要学习资源。该资料集覆盖了Hibernate框架的基础到高级应用,通过day1至day4的学习内容,旨在帮助...
1. Collection接口: Collection是所有单值集合的父接口,包括List和Set子接口。它的主要方法有: - `add(E element)`: 向集合中添加一个元素。 - `addAll(Collection<? extends E> c)`: 将另一个集合的所有元素...
在本资源包“黑马程序员 从零开始征服Android之旅(第一季)源码和笔记 下”中,我们聚焦于Android应用程序开发的基础与实践。通过学习,你可以系统地掌握Android开发的核心概念,逐步成长为一名合格的Android开发者...