Java基础系列--08_集合1

---恢复内容开始---

集合当中有很多都是应用到泛型的技术,所以在讲集合之前,应该先将泛型的概念普及一下。

泛型:
    (1)泛型是一种类型,但是这种类型是在编译或者调用方法时才确定。
    (2)格式:
       <数据类型>    如:Collection<E>这里的E指的是任意类型,可以理解为Object类型,因为Object是所有类的根类
    (3)好处:
        A:把运行期间的转换异常给提前到了编译期间
        B:优化了程序设计,不需要强制类型转换
        C:在减少了代码量的同时还增强了程序的可拓展性
    (4)泛型的演变
        A:泛型类(尤其是在C++中有很多的模板类,其实就是Java中的泛型)
        B:泛型方法
        C:泛型接口
    (5)泛型的使用:
        API中的类或者接口,其跟有<E>,就是泛型的应用。
       一般在集合中用集合    (1)可以对多个对象进行存储,方便我们对多个对象的操作

(2)集合的特点:
        1、长度可以发生改变
        2、只能存储对象
        3、可以存储多种类型对象(一般存储的还是同一种)
    (3)集合和数组的区别
        1、长度问题  数组固定;集合可变
        2、存储元素问题
             数组可以是基本类型,也可以是引用类型。
             集合只能是引用类型。
        3、是否同一类型
             数组元素类型一致。
             集合元素类型可以不一致。(在生成集合对象的时候不指定类型)
    (4)集合体系的由来
         集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。
         而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构。

集合的特点:

Collection 一次存一个对象, 单列集合
    List 可重复, 有索引,有序
        ArrayList 数组实现, 查找快, 线程不安全
        LinkedList 链表实现, 增删快, 线程不安全
        Vector 数组实现, 线程安全
    Set 不可重复, 没索引,无序
        HashSet 使用哈希算法去重复, 效率高, 但元素无序
        TreeSet TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
        LinkedHashSet HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序
这里先介绍集合的抽象类,而其抽象类提供的方法其实就是大部分需要用到的功能。学会了父类,再去学习其字类的功能,就会快很多了,因为子类拓展的功能其实并不多。这里所介绍的六个具体实现类只是其中比较常用的,还有很多其他实现类,有兴趣的朋友可以通过API去查看。

---恢复内容结束---

集合当中有很多都是应用到泛型的技术,所以在讲集合之前,应该先将泛型的概念普及一下。

泛型:
    (1)泛型是一种类型,但是这种类型是在编译或者调用方法时才确定。
    (2)格式:
       <数据类型>    如:Collection<E>这里的E指的是任意类型,可以理解为Object类型,因为Object是所有类的根类
    (3)好处:
        A:把运行期间的转换异常给提前到了编译期间
        B:优化了程序设计,不需要强制类型转换
        C:在减少了代码量的同时还增强了程序的可拓展性
    (4)泛型的演变
        A:泛型类(尤其是在C++中有很多的模板类,其实就是Java中的泛型)
        B:泛型方法
        C:泛型接口
    (5)泛型的使用:
        API中的类或者接口,其跟有<E>,就是泛型的应用。
       一般在集合中用集合    (1)可以对多个对象进行存储,方便我们对多个对象的操作

(2)集合的特点:
        1、长度可以发生改变
        2、只能存储对象
        3、可以存储多种类型对象(一般存储的还是同一种)
    (3)集合和数组的区别
        1、长度问题  数组固定;集合可变
        2、存储元素问题
             数组可以是基本类型,也可以是引用类型。
             集合只能是引用类型。
        3、是否同一类型
             数组元素类型一致。
             集合元素类型可以不一致。(在生成集合对象的时候不指定类型)
    (4)集合体系的由来
         集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。
         而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构。

集合的特点:

Collection 一次存一个对象, 单列集合
    List 可重复, 有索引,有序
        ArrayList 数组实现, 查找快, 线程不安全
        LinkedList 链表实现, 增删快, 线程不安全
        Vector 数组实现, 线程安全
    Set 不可重复, 没索引,无序
        HashSet 使用哈希算法去重复, 效率高, 但元素无序
        TreeSet TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
        LinkedHashSet HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序
这里先介绍集合的抽象类,而其抽象类提供的方法其实就是大部分需要用到的功能。学会了父类,再去学习其字类的功能,就会快很多了,因为子类拓展的功能其实并不多。这里所介绍的六个具体实现类只是其中比较常用的,还有很多其他实现类,有兴趣的朋友可以通过API去查看。

原文地址:https://www.cnblogs.com/CoderGan/p/10632946.html

时间: 2024-10-13 00:12:53

Java基础系列--08_集合1的相关文章

《Java 基础系列》初步整理

<Java 基础系列>初步整理大概有 12 篇,主要内容为.: 抽象类和接口内部类修饰符装箱拆箱注解反射泛型异常集合IO字符串其他第一篇我们来聊聊抽象类和接口. "抽象类和接口"听起来是非常普遍的东西,有些朋友会觉得:这个太基础了吧,有啥好说的,你又来糊弄我. 这里写图片描述 事实上我在面试中不仅一次被问到相关的问题: 抽象类和接口之间的区别?什么时候创建抽象类?什么时候创建接口?设计框架时该如何选择?我比较喜欢这样的问题,答案可深可浅,体现了我们对日常工作的思考. 我们什

Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet

概要 本章是JUC系列中的CopyOnWriteArraySet篇.接下来,会先对CopyOnWriteArraySet进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArraySet.内容包括:CopyOnWriteArraySet介绍CopyOnWriteArraySet原理和数据结构CopyOnWriteArraySet函数列表CopyOnWriteArraySet源码(JDK1.7.0_40版本)CopyOnWriteArraySet

夯实Java基础系列6:一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别!

目录 抽象类介绍 为什么要用抽象类 一个抽象类小故事 一个抽象类小游戏 接口介绍 接口与类相似点: 接口与类的区别: 接口特性 抽象类和接口的区别 接口的使用: 接口最佳实践:设计模式中的工厂模式 接口与抽象类的本质区别是什么? 基本语法区别 设计思想区别 如何回答面试题:接口和抽象类的区别? 参考文章 微信公众号 Java技术江湖 个人公众号:黄小斜 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl

夯实Java基础系列9:深入理解Class类和Object类

目录 Java中Class类及用法 Class类原理 如何获得一个Class类对象 使用Class类的对象来生成目标类的实例 Object类 类构造器public Object(); registerNatives()方法; Clone()方法实现浅拷贝 getClass()方法 equals()方法 hashCode()方法; toString()方法 wait() notify() notifAll() finalize()方法 CLass类和Object类的关系 参考文章 微信公众号 Ja

夯实Java基础系列13:深入理解Java中的泛型

目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试题 参考文章 微信公众号 Java技术江湖 个人公众号:黄小斜 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star.Fork.Watch三连哈,感谢你的

Java基础系列1:深入理解Java数据类型

Java基础系列1:深入理解Java数据类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括四个内容: Java基本类型 Java封装类型 自动装箱和拆箱 封装类型缓存机制 Java基本类型 Java基本类型分类.大小及表示范围 Java的基本数据类型总共有8种,包括三类:数值型,字符型,布尔型,其中 数值型: 整数类型:byte.short.int.long 浮点类型:float.doubl

Java基础面试:集合、内部类、线程

package test; import java.util.Hashtable; import java.util.Map; public class test { public static String change(String param){ param=null; return param; } public static void main(String[] args) { String param1="p1"; param1=change(param1); Map ta

夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理

目录 final使用 final变量 final修饰基本数据类型变量和引用 final类 final关键字的知识点 final关键字的最佳实践 final的用法 关于空白final final内存分配 使用final修饰方法会提高速度和效率吗 使用final修饰变量会让变量的值不能被改变吗: 如何保证数组内部不被修改 final方法的三条规则 final 和 jvm的关系 写 final 域的重排序规则 读 final 域的重排序规则 如果 final 域是引用类型 参考文章 微信公众号 Jav

夯实Java基础系列7:一文读懂Java 代码块和执行顺序

目录 Java中的构造方法 构造方法简介 构造方法实例 例 1 例 2 Java中的几种构造方法详解 普通构造方法 默认构造方法 重载构造方法 java子类构造方法调用父类构造方法 Java中的代码块简介 Java代码块使用 局部代码块 构造代码块 静态代码块 Java代码块.构造方法(包含继承关系)的执行顺序 参考文章 微信公众号 Java技术江湖 个人公众号:黄小斜 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github