1.概述

1.1、什么是集合?有什么用?
数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它类型的数据。集合为什么说在开发中使用较多?集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数       据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在java程序中会将10条数据封装成10个java对象,然后将10个java对象放到某一个集合当中,将集合传    到前端,然后遍历集合,将一个数据一个数据展现出来。1.2、集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,
集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用。)list.add(100); //自动装箱Integer注意:集合在java中本身是一个容器,是一个对象。集合中任何时候存储的都是“引用”。1.3、在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中
存储元素,等于将数据放到了不同的数据结构当中。什么是数据结构?数据存储的
结构就是数据结构。不同的数据结构,数据存储方式不同。例如:数组、二叉树、链表、哈希表...以上这些都是常见的数据结构。你往集合c1中放数据,可能是放到数组上了。你往集合c2中放数据,可能是放到二叉树上了。.....你使用不同的集合等同于使用了不同的数据结构。你在java集合这一章节,你需要掌握的不是精通数据结构。java中已经将数据结构实现了,已经写好了这些常用的集合类,你只需要掌握怎么用?在什么情况下选择哪一种合适的集合去使用即可。new ArrayList();  创建一个集合,底层是数组。new LinkedList(); 创建一个集合对象,底层是链表。new TreeSet();    创建一个集合对象,底层是二叉树。.....1.4、集合在java JDK中哪个包下?java.util.*;所有的集合类和集合接口都在java.util包下。1.5、为了让大家掌握集合这块的内容,最好能将集合的继承结构图背会!!!集合整个这个体系是怎样的一个结构,你需要有印象。1.6、在java中集合分为两大类:一类是单个方式存储元素:单个方式存储元素,这一类集合中超级父接口:java.util.Collection;一类是以键值对儿的方式存储元素以键值对的方式存储元素,这一类集合中超级父接口:java.util.Map;

2.初学重点

2.1、集合继承结构图(重点,可以背过)

collection:
Map:

2.2、 常用集合方法:(必会)
boolean add(Object e)      向集合中添加元素
int size()                 获取集合中元素的个数
void clear()               清空集合
boolean contains(Object o) 判断当前集合中是否包含元素o,包含返回true,不包含返回false
boolean remove(Object o)   删除集合中的某个元素。
boolean isEmpty()          判断该集合中元素的个数是否为0
void sort()                对集合进行排序
Object[] toArray()         调用这个方法可以把集合转换成数组。【作为了解,使用不多。】
2.2、常用集合:

(1)ArrayList集合(类比数组,有序可重复)

ArrayList知识点:
1、默认初始化容量10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,
初始化容量10。)2、集合底层是一个Object[]数组。3、构造方法:new ArrayList();new ArrayList(20);4、ArrayList集合的扩容:增长到原容量的1.5倍。ArrayList集合底层是数组,怎么优化?尽可能少的扩容。因为数组扩容效率比较低,建议在使用ArrayList集合的时候预估计元素的个数,给定一个初始化容量。5、数组优点:检索效率比较高。(每个元素占用空间大小相同,内存地址是连续的,知道首元素内存地址,然后知道下标,通过数学表达式计算出元素的内存地址,所以检索效率最高。)6、数组缺点:随机增删元素效率比较低。另外数组无法存储大数据量。(很难找到一块非常巨大的连续的内存空间。)7、向数组末尾添加元素,效率很高,不受影响。8、面试官经常问的一个问题?这么多的集合中,你用哪个集合最多?答:ArrayList集合。因为往数组末尾添加元素,效率不受影响。另外,我们检索/查找某个元素的操作比较多。9、ArrayList集合是非线程安全的。(不是线程安全的集合。)

(2)HashSet集合(无序,不可重复)

1、HashSet集合是无序的切不可重复的。实际底层存放到HashMap中。
2.3、 集合迭代(重点)
 // 注意:以下讲解的遍历方式/迭代方式,是所有Collection通用的一种方式。// 在Map集合中不能用。在所有的Collection以及子类中使用。// 创建集合对象Collection c = new ArrayList(); // 后面的集合无所谓,主要是看前面的Collection接口,怎么遍历/迭代。// 添加元素c.add("abc");c.add("def");c.add(100);c.add(new Object());// 对集合Collection进行遍历/迭代:// 第一步:获取集合对象的迭代器对象IteratorIterator it = c.iterator();// 第二步:通过以上获取的迭代器对象开始迭代/遍历集合。/*以下两个方法是迭代器对象Iterator中的方法:boolean hasNext()如果仍有元素可以迭代,则返回 true。Object next() 返回迭代的下一个元素。*/while (it.hasNext()) {Object obj = it.next();System.out.println(obj);}

注意1:一直取,不判断,会出现异常!
反例:

    // 出现异常:java.util.NoSuchElementExceptionwhile(true){Object obj = it.next();System.out.println(obj);}

注意2:集合结构只要发生改变,迭代器必须重新获!。
反例:

Collection c2 = new ArrayList();c2.add("abc");c2.add("def");c2.add("xyz");Iterator it2 = c2.iterator();//获取迭代器c2.add("xyz");//更改了c2的数据结构while(it2.hasNext()){Object o = it2.next();     System.out.println(o);}//出现异常:java.util.ConcurrentModificationException

报错:
还有泛型也是重点,见java-集合-泛型篇!

java基础之集合篇相关推荐

  1. 【Java基础知识回顾篇】之打怪升级Day001

    Java基础知识回顾篇之打怪升级Day001 目录 Java基础知识回顾篇之打怪升级Day001 简介 一.为什么现在主流的是Java8和Java11? 二.简单尝试编写java程序 1.编写一个He ...

  2. Thinking in java基础之集合框架

    Thinking in java基础之集合框架 大家都知道我的习惯,先上图说话. 集合简介(容器) 把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合,例如这里有20个苹果,我们把每一个苹果当成 ...

  3. java基础 ArrayList集合基本方法演示

    java基础 ArrayList集合基本方法演示 import java.util.ArrayList; import java.util.Iterator;public class ArrayLis ...

  4. java把map值放入vector_Thinking in java基础之集合框架

    Thinking in java基础之集合框架 大家都知道我的习惯,先上图说话. 集合简介(容器) 把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合,例如这里有20个苹果,我们把每一个苹果当成 ...

  5. java 获取泛型t的class_阿里巴巴都鼎力推荐的java基础之集合其他内容和泛型3

    第三节 泛型 3.1为什么需要泛型 没有采用泛型之前 1.不安全:添加元素是无检查 宽进 2.繁琐:获取元素时需要强制类型转换 严出 采用泛型之后 1.安全 严进 2.简单 宽出 3.2什么是泛型ge ...

  6. JAVA基础-06.集合-14.【List、Set】

    01_数据结构_栈&队列 02_数据结构_数组 03_数据结构_链表 04_数据结构_红黑树 05_HashSet集合存储数据的结构(哈希表) 06_Set集合存储元素不重复的原理 day03 ...

  7. 《回炉重造 Java 基础》——集合(容器)

    整体框架 绿色代表接口/抽象类:蓝色代表类. 主要由两大接口组成,一个是「Collection」接口,另一个是「Map」接口. 前言 以前刚开始学习「集合」的时候,由于没有好好预习,也没有学好基础知识 ...

  8. 【Java基础】· 集合习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  9. 7.Java基础之集合框架+JDK8新特性

    1.集合概述 1.1 为什么学集合 思考:数组有什么缺点? 长度一旦定义,不能改变!定义大了,浪费空间:小了,可能不够 ---->动态的数组 对于增删,需要移动位置 ->有人帮我们做这个事 ...

最新文章

  1. java ee 3.0_初识JavaEE 6 的 Servlet3.0
  2. Sql Server 关于整表插入另一个表部分列的语法以及select 语句直接插入临时表的语法...
  3. 安装Ubuntu 出现 SQUASFS error / sd 8:0:0:0 :[sdb] assuming drive cache:write through
  4. CreateProcess启动游戏注入DLL
  5. 指标搭建篇:如何快速定位数据异常?——ROI异常实战案例
  6. 软件配置管理(四)代码味道与重构
  7. mysql添加用户权限报1064 - You have an error in your SQL syntax问题解决
  8. c语言如何打印unicode字符,如何在C ++中打印Unicode字符?
  9. 虚拟化服务器不能远程控制,kvm虚拟化如何搭建? 向日葵远程控制
  10. Java Web开发技术应用——监听器
  11. 义帝熊心--秦末汉初
  12. LZJ的圣剑,第二次模拟赛,贪心
  13. 字符间距和文字效果(转)
  14. 三层交换机配置实现不同网络互通
  15. PLSQL - 递归子查询RSF打破CONNECT BY LOOP限制
  16. 【2】深度神经网络的损失函数/激活函数
  17. 手机也可以快速翻译、PDF翻译超简单
  18. 【UOJ】#246. 【UER #7】套路
  19. 微信小程序例子——使用icon组件显示常用图标
  20. (转) Exploring How Cache Coherency Accelerates Heterogeneous Compute

热门文章

  1. Win 10多屏显示设置教程 游戏多屏合一显示(超详细)
  2. IE6/IE7 /IE8/Firefox/Chrome/Safa…
  3. 陶行知:学生自治问题之研究
  4. 诗经 - 小雅 - 出车
  5. 大学临近结束回望高中
  6. QTabWidget自定义qss样式订制
  7. 2022 还有人做四足蜘蛛机器人
  8. 提取图像中颜色交界处的坐标
  9. 机器语言-汇编语言-高级语言各自优缺点
  10. MATLAB Simulink 替代方案 scilab