`
Jacular
  • 浏览: 184927 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

java集合

    博客分类:
  • java
阅读更多
第一类
Collection(父接口)
list(接口)        Set(接口)
Arraylist         HashSet
LinkeList         TreeSet
第二类
Map接口
HashMap   TreeMap


关于List接口  可以容纳重复对象
ArrayList --->  数组列表
ArrayList底层的容器就是Object类型的数组
默认大小是10
当数组大小不够时,扩容1.5倍
ArrayList中对数组中的元素经常经常进行插入或者移除操作效率低
ArrayList线程不同步
ArrayList序列化有着特殊的操作(以后会讲,面试常问)

LinkedList--->  链表结构
双向链表结构,基本语法和ArrayList相似
简单的去认识一下源码的构造方法,和add方法,就能看懂是一个链表结构
如果经常在元素中插入数据移除数据效率会高一些
并且LinkedList提供了很多操作头尾的方法,ArrayList是没有的
addFirst
removeFirst
addLast
removeLast
getFirst
getLast等方法


jdk老版本中遗留的Vector
类似与ArrayList   面试中常会比较ArrayList和Vector的区别
Vector是同步的,效率较低,安全性高
扩容的时候直接扩位2倍
遍历的方式



关于Set接口  不能容纳重复对象
HashSet
明确重复的定义:
   跟现实应用中一样,要重写equals方法和hashCode方法
  重写的时候一定要确认什么样的属性才能唯一标识这个对象,用这些
  属性来生产equals和hashCode方法
了解对象是如何放入了HashSet集合中
了解什么情况下会倒置对象从HashSet集合中移除不了.


TreeSet
TreeSet中如果容纳多个对象,这组对象必须能够
根据某种规则进行排序
比较规则有两种方式
1.加入对象的类需要实现Comparable接口
   接口的实现方法中定义排序规则
   比较规则的实现如果返回0  就认为是同一个对象,就不加入了

TreeSet
比较规则1:Comparable
比较规则2:TreeSet 的构造函数可以传入一个参数Comparator
        对于没有实现Comparable接口的类来说,也有比较规则了
        对于已经实现了Comparable接口的类来说,可以再通过这种方式来改变排序规则
       
HashSet底层用的HashMap来实现
TreeSet底层是用的TreeMap来实现的 


封装类
基本的数据类型不是面向对象的
byte  short int      char      long boolean float double
对这些基本数据类型也有对应的类,这些对应的类中,封装了对这个数据类型的一些操作
Byte  Short Integer  Character Long Boolean Float Double



Map(key,value)
HashMap
1.基本语法  添加,遍历的方式
2.存储结构(了解源码)
HashMap如果没有给初始大小初始大小16
key value都会被封装成Entry的对象(大小就是开辟的这个类型的数组的大小)
如果初始化给定了大小,这个大小不是2的次方数,它会找到比这个初始大小要大的最接近的2的次方数
loadFactor这个属性是加载因子,假设加载因为是0.75  那么当容量达到 初始大小*0.75时就会扩容

如何往Map中存放数据
  拿到key对象得到hashCode值在经历一次hash算法得到一个数据
拿这个数据在与map的大小-1(数组的大小)  作&运算
一个数%2的次方数  = 这个数& 2的次方数-1  后面的效率高很多,为什么初始大小要是2的次方数的原因
把&得到的结果作为数组的元素位置把对象存放入数组

为什么要把hashCode值在经历一次hash算法,这样可以减少冲突率
如果这个数组位置上有元素了,会去进行equals比较,如果相同则覆盖
如果equals不相同呢? 会以链表结构跟在这个位置元素的后面
HashMap是一个数组加链表的结构
我们应该把元素尽量的放入数组而不是链表,因为一旦放在同一个位置,就意味着要
遍历链表中的每一个元素,进行比较,效率很低.HashMap本身也对这个做了处理,就是key的hashCode再一次进行
hash算法,就是位了避免冲突率.
我们需要重写equals和hashCode只要遵循之前的原则即可.


HashMap比较经典的用法是计数
   先取,没有就放一个进去,计数为1
             有取出value+1再放入
            
实际开发中,最好估算一下Map的大小然后给一个初始大小
一旦扩容,所有元素的位置都要重新计算,效率很低.
分享到:
评论

相关推荐

    java集合思维导图

    Java集合框架是Java编程语言中的一个核心部分,它为数据存储和管理提供了高效且灵活的解决方案。本思维导图及总结旨在深入理解并掌握Java集合的相关概念和使用方法。 首先,我们来了解一下Java集合框架的基本构成。...

    java 集合

    本文将深入探讨Java集合框架的基础知识,包括接口、类、以及它们在实际开发中的应用。 首先,Java集合框架由一系列接口和实现这些接口的类组成。主要的接口有`List`、`Set`和`Queue`,它们各自代表了不同特性的数据...

    java 集合练习题

    在这个“java集合练习题”中,我们主要关注如何使用Java集合框架来处理数据,特别是对于学生信息的存储、排序和输出。以下是对这个练习题的详细解析: 1. **集合框架简介**: Java集合框架是Java API的一部分,它...

    Java集合思维导图.xmind.zip

    Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组高效的数据结构和算法,使得开发者可以方便地存储和管理对象。这份"Java集合思维导图.xmind.zip"压缩包文件,显然旨在帮助学习者深入理解Java集合框架的...

    java集合框架面试题

    ### Java集合框架经典面试题详解 #### 1. Java集合框架概述及优点 - **定义**: Java集合框架是一个设计模式,用于组织和操纵对象集合。它由一系列接口、实现类和算法组成,提供了统一的方式管理和操作数据集合。...

    java集合知识大全

    ### Java集合知识大全 #### 一、集合概述 在Java编程语言中,集合是一组用于存储其他对象的对象。集合框架提供了多种数据结构,用于管理不同类型的数据。这些数据结构包括列表(List)、集(Set)、映射(Map)等,每种...

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    Java集合排序及java集合类详解

    Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的接口和类。在本篇中,我们将深入探讨Java集合的排序机制以及集合类的详细使用。 首先,我们来了解一下Java集合的基本分类。Java...

    java 集合分组与排序

    Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这...

    实验七:Java集合与泛型

    Java集合框架是Java编程语言中用于存储和管理对象的核心组件,它包括了各种接口和类,为处理数据提供了丰富的选择。在本次实验中,我们深入学习了Java集合框架中的两个主要部分:List接口和Map接口,以及它们的主要...

    java 集合部分笔记

    【Java集合】 Java集合框架是Java编程语言中用于存储和操作对象的工具,它提供了多种数据结构,如列表、集、映射等,以适应不同的数据处理需求。集合类通常位于`java.util`包下,是Java程序员必备的知识点。 1. **...

    Java集合框架总结

    ### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...

    实验05 Java集合.doc

    Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高级的数据结构,使得开发者能够更方便地管理和操作对象。在本次实验中,我们主要关注了三个主要的集合接口:Set、List和Map,以及它们的一些常见...

    java集合框架的使用。集合的运算

    Java集合框架是Java编程语言中一个非常重要的组成部分,它为开发者提供了存储和操作对象的统一接口和类。这个框架使得处理各种数据结构变得更加方便和高效。在这个“java集合框架的使用”主题中,我们将深入探讨如何...

    一个讲解很清晰的Java集合框架PPT

    Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组接口和类,用于高效地存储、管理和操作数据。这个“一个讲解很清晰的Java集合框架PPT”显然是一个对外公开的教育资源,旨在帮助学习者深入理解Java集合...

    Java集合详解,详细讲解java的集合类

    Java集合框架是Java编程语言中的核心部分,它提供了一种高效、灵活的方式来组织和操作对象的集合。在Java中,集合主要分为两大类:Collection和Map。本文将深入讲解Java集合类,特别是Collection接口和其下的List、...

    Java集合整体讲解

    Java集合整体讲解,其中包含了Collection,Map,Iterator和一些工具类,以及集合整体大框架

    深入Java集合学习系列

    Java集合框架是Java编程语言中的核心组件之一,它为存储、管理和操作对象提供了一套高效且灵活的工具。本系列深入讲解了Java集合框架中的重要组成部分,包括HashMap、ArrayList、LinkedHashMap、HashSet以及...

    易语言仿java集合 list map源码

    本主题聚焦于易语言中的面向对象编程,特别是模仿Java集合框架的List和Map接口的实现。这些数据结构在编程中扮演着核心角色,用于组织和管理数据。 首先,让我们深入了解易语言的面向对象编程概念。面向对象编程...

Global site tag (gtag.js) - Google Analytics