目录

一、集合体系结构讲解

1、Collection顶级接口讲解

(1)概念

(2)常用方法

(3)迭代器

2、讲解List集合与其实现类

(1)可重复

(2)有序

(3)List优化

3、List实现类的不同特征

(1)对象数组结构

(2)链表结构

4、泛型

(1)JDK1.5之后以类型作为参数的类就叫泛型(2)作用:提高程序健壮性,简化代码(3)泛型的默认值是Object

5、装箱、拆箱

(1)值类型->引用类型 装箱   (2)引用类型->值类型 拆箱   (3)jdk1.5之后引入了自动装箱及自动拆箱功能


一、集合体系结构讲解

CollectionList (有序集合,允许相同元素和null)

│  ├LinkedList (非同步,允许相同元素和null,遍历效率低插入和删除效率高)

│  ├ArrayList (非同步,允许相同元素和null,实现了动态大小的数组,遍历效率高,用的多)

│  ├Vector(同步,允许相同元素和null,效率低)

│  ├ Set (无序集合,不允许相同元素,最多有一个null元素) | └HashSet(无序集合,不允许相同元素,最多有一个null元素

1、Collection顶级接口讲解

(1)概念

 ①Collection是最基本的集合接口(也可以称为顶级接口)

          ②在Collection的实例中,有些实例允许相同的元素,有些则不允许,还有一些能内置实现排序功能,所以 根据存储数据的方式(数据结构)各有不同,所以存储的容器也就有多种,从而形成了集合框架这一体系

③同时,在Java中不提供直接继承自Collection的类,Java所提供的类都是继承自Collection的“子接口”: List和Set ,但不是Map的父接口

(2)常用方法

(3)迭代器

①概念

因为Collection继承了Iterable,所以它以下的实现类也都会具备 iterator() 这个方法 ,我们可以通过这个方法来获得一个 Iterator ,也就是一个迭代器 关于迭代器中的方法,我们可以通过查看 Iterator 的源码

②方法作用

③使用步骤 

④使用ArrayList来演示迭代器的使用

ArrayList<Object> cs=new ArrayList<Object>();//里氏替换原则
//向集合中添加数据
cs.add("1");
cs.add("2");
cs.add("3");
cs.add("4");
cs.add("5");
cs.add("6");
System.out.println("集合的原有长度:"+cs.size());
Iterator<Object> i = cs.iterator();//获得该集合的迭代器
while(i.hasNext()) {//判断迭代器中是否存在下一个元素
System.out.println(i.next());//指针向下移动一位,并取出对应元素(对应上图讲解)
i.remove();//移除指针对应的元素
}
System.out.println("集合的长度:"+cs.size());

2、讲解List集合与其实现类

Collection的子接口,这个接口所具备的特征: 可重复 , 有序

(1)可重复

在集合内部,一个元素可以出现多次,也就是在集合中可以占有多个位置


Person p=new Person();
List<Person> ls=new ArrayList<Person>();
ls.add(p);
ls.add(p);
ls.add(p);
//说出集合的长度 size=3
//得出结论: p这个元素在集合中重复了三次,占了三个位置,这就是可重

(2)有序

List中的有序指的不是内部的元素会以某种格式排序,而是指其中的每个元素在进入集合时都是有添加顺序的 先添加的在前面,后添加的在后面,这些位置是有序的 也就是 0,1,2,3,4.... (我们称之为下标)

List<String> ls=new ArrayList<String>();
ls.add("jack");
ls.add("mary");
ls.add("eason");
//jack的下标是1
//mary的下标是2
//eason的下标是3
//add这个方法是在集合的最后一位添加元素,下标也就会随着变大
//在add的时候还可以指定当前添加的元素的位置 -> ls.add(2,"asong");
///将 asong 放入集合的第2位
//未添加 asong 时: [jack, mary, eason]
//添加了 asong 后: [jack, mary, asong, eason]
//需要注意的是,指定的位置必须小于当前集合的最大下标
//同时,因为List是有序的,我们除了可以按照顺序(下标)插入之外,也可以按照顺序(下标)来读取与删除
//读取: ls.get(0),根据下标来读取的方式我们一般称为随机读取
//删除:
ls.remove(0) //根据下标移除第0位
ls.remove("jack") //移除集合中的 jack ,集合中是使用equals来判断的

(3)List优化

  当集合实例化的时候,默认的大小为10,我们也可以在实例化的时候调用对应的构造来创建响应的大小

因为无参实例集合的初始长度为10,当我们添加的元素超过10位的时候,集合的大小就不够了,需要扩 容 每次添加的时候,都调用grow方法判断是否需要扩容

      ArrayList的扩容因子是1.5 : 原容量的0.5倍

3、List实现类的不同特征

根据数据结构的不同,List底下的实现类可以分为两种: 对象数组结构 , 链表结构

(1)对象数组结构

① 特点:基于对象数组,拥有下标,每次扩容的时候其实都是新建了一个更大的数组,然后将原有内容复 制过去

② ArrayList 增删慢,查询快,有连续下标,线程不同步(不安全),扩容因子为1.5

③ Vector 增删改查都慢,有连续下标,线程同步(安全),扩容因子为2

查看两个类中,相同方法的区别(突出线程的同步)

基于对象数组的集合最大的好处就是读取非常快,因为是随机读取,但是修改的速度比较慢,如果在项 目中遇到了需要非常频繁的对集合中的元素进行修改的操作,可以使用链表结构的集合

(2)链表结构

 ① Linkedlist 链表结构,增删快,查询慢,没有连续下标

 ② LinkList的使用

LinkedList<String> ls=new LinkedList<String>();
ls.add("jack");
ls.add("jack1");
ls.add("jack2");
ls.add("jack3");
System.out.println(ls.get(1));//jack1
//虽然我们是通过下标来取值,但是在内部,还是得从链表开头一直查,查询到链表的对应位

     ③LinkList特有方法

addFirst();// 添加在第一个
addLast(); //添加在最后一个
getFirst();// 得到第一个
getLast(); //得到最后一个
removeFirst();// 移除第一个
removeLast(); //移除最后一个

4、泛型

(1)JDK1.5之后以类型作为参数的类就叫泛型
(2)作用:提高程序健壮性,简化代码
(3)泛型的默认值是Object

//以类型作为参数的类就称为泛型List<Integer> list = new ArrayList<Integer>();list.add(1);list.add(3);list.add(5);list.add(7);list.add(9);//获取迭代器ListIterator<Integer> listIterator = list.listIterator();while(listIterator.hasNext()) {//获取数据类型Integer num = listIterator.next();if(num%2==0) {System.out.println(num);}}

5、装箱、拆箱

(1)值类型->引用类型 装箱
   (2)引用类型->值类型 拆箱
   (3)jdk1.5之后引入了自动装箱及自动拆箱功能

       //装箱:值类型变为引用类型int a =1;Integer num = new Integer(a);//拆箱:引用类型变为值类型int b = num.intValue();

J2EE快速入门之集合框架【01】相关推荐

  1. J2EE快速入门之集合框架【02】

    目录 一.LinkedList实现堆栈 1.实例化链表 2.压栈 3.出栈 4.计算堆栈的数量 5.实例化测试 6.结果显示: 二.Set接口下的实现类 1.HashSet (1)无序 (2)不重复 ...

  2. 前端_快速入门Vue.js框架

    文章目录 快速入门Vue.js框架 0.前言 1.Vue.js框架 1.1.Vue简介 1.2.第一个Vue程序 1.3.el:挂载点 2.Vue指令 2.2.v-html 2.3.v-on 2.4. ...

  3. ADO.NET Entity Framework Beta2(五)/快速入门(实体框架)

    This quickstart illustrates a series of tasks that support the topics in Getting Started with the En ...

  4. 快速了解Java集合框架

    1. 简介 JDK1.2 引入了 Java 集合框架,包含一组数据结构.与数组不同,这些数据结构的存储空间会随着元素添加动态增加.其中,一些支持添加重复元素另一些不支持,一些支持 null,一些能自动 ...

  5. J2EE基础之map集合框架

    目录 一.map集合框架特点 二.遍历方式 三.常用实现类HashMap 四.泛型 五.集合框架工具类( Collections和 Arrays ) 等等先别急,先了解一下什么是Map集合? Map是 ...

  6. J2EE 快速入门之第二章 Set集合详解

    一:Collection.remove()与ArrayList.remove()方法的不同            1. Collection中只能根据元素移除            2.ArrayLi ...

  7. php框架快速入门,php-laravel4.0框架 简单快速入门

    前提必须已经安装好了laravel4.0版本. 写入权限: 安装完 Laravel ,你还需要为web服务器设置 app/storage 目录的写入权限. 目录结构: 安装完框架后,你需要熟悉一下该项 ...

  8. php高性能框架phaicon,3分钟快速入门php高性能框架Phalcon

    Phalcon 是什么,我们为啥要选择它?Phalcon 是开源.全功能栈.使用 C 扩展编写.针对高性能优化的 PHP 框架.开发者不需要学习和使用 C 语言的功能, 因为所有的功能都以 PHP 类 ...

  9. MyBatis 01 快速入门

    MyBatis 01 快速入门 文章目录 MyBatis 01 快速入门 一.学习目标 二.为什么需要框架技术 三.框架技术介绍 四.主流框架介绍 五.持久化与ORM 六.MyBatis简介 七.搭建 ...

  10. Go语言Web框架:Beego框架快速入门

    文章目录 Beego框架快速入门 1.beego框架了解 2.MVC架构 3.环境搭建 4.beego的项目结构分析 5.Beego快速体验 6.Beego运行流程分析 7.Post案例实现 7.1前 ...

最新文章

  1. php 偷偷转移别人权重,判断百度蜘蛛偷偷进行301转移权重 给新站提权
  2. Java桌面程序打包成exe可执行文件
  3. Android开源之BaseRecyclerViewAdapterHelper(持续更新!)
  4. 零基础学习hadoop到上手工作线路指导(中级篇)
  5. Tomcat关闭失败,SEVERE: Could not contact localhost:8005. Tomcat may not be running.
  6. android 自定义菜单栏,GitHub - earthWo/AndroidBottomNavigation: android 底部菜单栏,自定义样式,自定义菜单数量,添加滚动动画和水波纹动画...
  7. IntelliJ IDEA 2017新工具
  8. matlab charl,基于MATLAB/Simulink的双闭环SPWM变频调速系统仿真.pdf
  9. 对程序员来说最难的是写代码吗?
  10. TIOBE 7月编程语言排行:各大城市程序员的工资状况又又又涨了
  11. 页面上通过地址栏传值时出现乱码的两种解决方法
  12. Ubuntu批量转换图片格式
  13. c#反编译生成DLL过程
  14. matlab 对数回归,对数拟合
  15. 一文贯穿“如何制定研究生规划、找实习、秋招”
  16. POJ 2706 Connect
  17. 软件体系结构的分析与测试,软件体系结构分析与评价,software architecture analysis and evaluation,音标,读音,翻译,英文例句,英语词典...
  18. erp系统的服务器如何配置,erp系统云服务器怎么配置
  19. 一个阅读分享的微信小程序(也可用于新闻阅读,新闻分享)(原创)
  20. 清理 Visual Studio 工具箱 的冗杂控件(第三方控件卸载不完全)

热门文章

  1. lockdir便携式文件夹加密器(单文件绿色版)
  2. 千方百剂医药管理系统对接第三方WMS系统(天力士物流)
  3. Android源码在线查看工具
  4. 在EnableQ创建一张问卷
  5. 学生党什么价位蓝牙耳机性价比高?2021这五款蓝牙耳机发烧友都爱了
  6. 免拆破解电信机顶盒TY1208-Z,绝对成功
  7. 【Protel】Protel99SE(附汉化包+SP6+增强工具+视频教程)
  8. 新买的笔记本电脑怎么分盘_2020年笔记本电脑选购有哪些建议和推荐?
  9. 解决webSocket不兼容IE浏览器问题
  10. Ubuntu 18.04安装i686-elf交叉编译工具链的方法