Java集合的总体框架相关知识总结

一、集合概述

数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它的数据。

二、集合在开发中的应用

集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在Java程序中会将10条数据封装成10个Java对象,然后将10个Java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来

三、集合存储的数据

  • Java集合中实际存放的只是对象的引用每个集合元素都是一个引用变量,实际内容都放在堆内存或者方法区里面,但是基本数据类型是在栈内存上分配空间的,栈上的数据随时就会被收回的。
  • 可以通过包装类把基本类型转为对象类型,存放引用就可以解决这个问题。更方便的,由于有了自动拆箱和装箱功能基本数据类型和其对应对象(包装类)之间的转换变得很方便,想把基本数据类型存入集合中,直接存就可以了,系统会自动将其装箱成封装类,然后加入到集合当中

注意:

  • 集合在Java中本身是一个容器,是一个对象
  • 集合中任何时候存储的都是“引用”
  • 集合里面存储的是对象内存地址
  • 集合里面可以套集合
  • 集合也是一个对象,也有内存地址

在Java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构当中。什么是数据结构?数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。

比如

  • 数组
  • 二叉树
  • 链表
  • 哈希表…

以上这些都是常用的数据结构

你往集合c1中存放数据,可能是放到数组上了。
你往集合c2中存放数据,可能是放到二叉树上了。

你使用不同的集合等同于使用了不同的数据结构。new不同的对象,就是使用不同的数据结构。如果对集合用法不了解,多去查JDK的API和百度

  • new ArrayList(); 创建一个集合,底层是数组
  • new LinkedList(); 创建一盒集合对象,底层是链表
  • new TreeSet(); 创建一个集合对象,底层是二叉树

四、集合的包

所有的集合类和集合接口都在Java.util包下,Java.util.*;

五、集合的两大类

  • 一类是单个方式存储元素,单个方式存储元素,这一类集合中超级父接口:Java.util.Collection;
  • 一类是以键值对的方式存储元素,以键值对的方式存储元素,这一类集合中超级父接口:Java.util.Map;

Iterrator it = “Collection 对象”.iterator();
it是迭代器对象

synchronized

  • 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
  • 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
  • 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
  • 修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。

Iterable是接口

  • 可迭代的,可遍历的,所有集合元素都是可迭代的,可遍历的
  • 属性:iterator()

Collection是接口

  • collection继承于Iterable
  • 所有集合继承Iterable的含义是:所有集合都是可迭代的

Iterator

  • Iterator与Collection是关联关系
  • 集合的迭代器对象
  • 属性:hashNext(),next(),remove()…

List是接口

  • List继承于Collectionlist
  • 集合元素的特点:有序可重复,存储的元素有下标
  • 有序实际上是说存进去是这个顺序,取出来还是这个顺序,这里的顺序不是按照大小排序
  • 有序是因为list集合都有下标,下标从0开始,以1递增

ArrayList

  • ArrayList继承于ListArrayList
  • 集合底层采用了数组这种数据结构
  • ArrayList集合是非线程安全的

LinkedList

  • LinkedList继承于List
  • LinkedList集合底层采用了双向链表数据结构

Vector

  • Vector继承于List
  • Vector集合底层采用了数组这种数据结构
  • Vector集合是线程安全的
  • Vector所有的方法都有syndronized关键词修饰,所以线程安全,但是效率较低,Vector用的少

Set是接口

  • Set继承于Collection
  • Set集合存储元素特点:无序不可重复
  • 无序表示存进去是这个顺序,取出来就不一定是这个顺序了
  • Set集合中元素没有下
  • 标Set集合中的元素不能重复

HashSet

  • HashSet继承于Set
  • HashSet集合在new的时候,底层实际上new了一个HashMap集合
  • 向HashSet集合中存储元素,实际上是存储到了HashMap集合中
  • HashMap集合是一个哈希表数据结构

SortedSet是接口

-SortedSet集合存储元素的特点:无序不可重复,但是放在SortedSet集合中的元素可以自动排序
SortedSet是可排序集合。放到该集合中的元素是自动按照大小顺序排序

TreeSet

  • TreeSet继承于SortedSetTreeSet
  • 集合底层实际上是TreeMap
  • new TreeSet集合的时候,底层实际上new了一个TreeMap集合
  • 往TreeSet集合中放数据的时候,实际上是将数据放到TreeMap集合中了
  • TreeMap集合底层采用了二叉树数据结构

Map是接口

  • Map集合和Collection集合没有关系
  • Map集合以key和value的这种键值对的存储方式存储元素
  • key和value都是存储Java对象的内存地址
  • 所有Map集合的key特点:无序不重复
  • Map集合的key和Set集合存储元素特点相同

HashMap

  • HashMap继承于Map
  • HashMap集合底层是哈希表数据结构
  • 非线程安全的
  • Hashable
  • Hashable集合底层也是哈希表数据结
  • 构线程安全,其中所有方法都带有synchronized关键字,效率低

SortedMap是接口

  • SortedMap集合存储元素特点:无序不可重复
  • 放在SortedMap集合key部分的元素会自动按照大小顺序排序
  • 称为可排序的集合

Properties

  • Properties继承Hashable,另外Properties存储元素的时候也是采用key和value的形式存储k
  • ey和value只支持String类型,不支持其他类型
  • Properties被称为属性类

TreeMap

  • TreeMap集合底层的数据结构是一个二叉树

到此这篇关于Java集合的总体框架相关知识总结的文章就介绍到这了,更多相关Java集合框架内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Lambda表达式和Java集合框架

    本文github地址 Java8为容器新增一些有用的方法,这些方法有些是为完善原有功能,有些是为引入函数式编程(Lambda表达式),学习和使用这些方法有助于我们写出更加简洁有效的代码.本文分别以ArrayList和HashMap为例,讲解Java8集合框架(Java Collections Framework)中新加入方法的使用. 前言 我们先从最熟悉的Java集合框架(Java Collections Framework, JCF)开始说起. 为引入Lambda表达式,Java8新增了jav

  • Java基础之集合框架详解

    一.前言 本节学习到的内容有以下5类,不分先后顺序: 集合Collection体系结构 List子类 与集合结合使用的迭代器对象 集合与数组的区别? 常见的一般数据结构整理 二.集合的由来? Collection List ArrayList Vector LinkedList Set hashSet treeSet 在集合没有出现之前,使用对象数组来存储对象,但是,对象数组的长度一旦确定,则不可以发生变化,所以我们希望存在一个容器就像StringBuffer一样存储字符串,同时依据传入的值的个

  • Java集合框架LinkedList详解及实例

    Java集合框架LinkedList详解 LinkedList定义 package java.util; public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0; transient Node<E> first;

  • Java集合框架中迭代器Iterator解析

    Java里面的数组数据可以通过索引来获取,那么对象呢?也是通过索引吗?今天我们就来分析一下Java集合中获取集合对象的方法迭代-Iterator. 本篇文章主要分析一下Java集合框架中的迭代器部分,Iterator,该源码分析基于JDK1.8,分析工具,AndroidStudio,文章分析不足之处,还请指正! 一.简介 我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.has

  • Java复习之集合框架总结

    俗话说:温故而知新.想想学过的知识,就算是以前学得很不错,久不用了,就会忘记,所以温习一下以前学习的知识我认为是非常有必要的.而本篇文件温习的是 Java基础中的集合框架. 为什么会有集合框架? 平时我们用数组存储一些基本的数据类型,或者是引用数据类型,但是数组的长度是固定的,当添加的元素超过了数组的长度时,需要对数组进行重新的定义,这样就会显得写程序太麻烦,所以Java内部为了我们方便,就提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少. 数组可以存储

  • java集合框架线程同步代码详解

    List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括null在内的所有元素.除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小.(此类大致上等同于Vector类,除了此类是不同步的.)size.isEmpty.get.set.iterator和listIterator操作都以固定时间运行.add操作以分摊的固定时间运行,也就是说,添加n个元素需要O(n)时间.其他所有操作都以线性时间运行(大体上讲).与用于LinkedList实现的常数因子相比,此实现的

  • JAVA集合框架工具类自定义Collections集合方法

    项目中有需要多次统计 某些集合中 的某个属性值,所以考虑封装一个方法,让其其定义实现计算方式. 话不多说,看代码: 1.封装的自定义集合工具类:CollectionsCustom package com.test.util; import java.util.Collection; import org.apache.commons.collections.CollectionUtils; /** * 自定义集合处理类 */ public class CollectionsCustom { /*

  • 简单了解java集合框架LinkedList使用方法

    代码如下 package cn.burce.List; import java.util.LinkedList; public class LinkedListdemo { // LinkedList 链表集合的特有 // 自身特点:链表底层实现,查询慢,增删快 // 子类特有功能,不能多态 public static void main(String[] args) { fun(); } public static void fun() { LinkedList<String> list =

  • 基于Java中最常用的集合类框架之HashMap(详解)

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构. HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作.存储的是对的映射,允许多个null值和一个null键.但此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 除了HashMap是非同步以及允许使用null外,HashMap 类与 Hashtable大致相同. 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性

  • Java集合框架Collections原理及用法实例

    Collections工具类 Java里关于聚合的工具类,包含有各种有关集合操作的静态多态方法,不能实例化(把构造函数私有化) public class Collections { // Suppresses default constructor, ensuring non-instantiability. private Collections() { } } 和Collection的区别 Collection是接口,提供了对集合对象进行基本操作的通用接口方法,List.Set等多种具体的实

  • 通过实例学习Java集合框架HashSet

    这篇文章主要介绍了通过实例学习Java集合框架HashSet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 示例 1 : 元素不能重复 Set中的元素,不能重复 package collection; import java.util.HashSet; public class TestCollection { public static void main(String[] args) { HashSet<String> names = n

随机推荐