首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    这一次,彻底搞懂SparseArray实现原理

    最近在整理SparseArray这一知识点的时候,发现网上大多数SparseArray原理分析的文章都存在很多问题(可以说很多作者并没有读懂SparseArray的源码),也正因此,才有了这篇文章。...一、SparseArray的类结构 SparseArray可以翻译为稀疏数组,从字面上可以理解为松散不连续的数组。虽然叫做Array,但它却是存储K-V的一种数据结构。...大概这也是SparseArray名字的由来吧。 三、SparseArray的put()方法 作为一个存储K-V类型的数据结构,put方法是key和value的入口。...也是SparseArray中最重要的一个方法。...这也是网上大部分文章对应SparseArray的解析都是含糊不清的原因。相信通过本篇文章的学习一定对SparseArray的实现有了新的认识!

    79610

    Android开发之那些好用的数据结构与API

    一、数据结构篇 1.SparseArray —— 替代HashMap,主要有以下几种 SparseLongArray SparseIntArray SparseBooleanArray SparseArray...SparseArray比HashMap更省内存,它对数据采取了压缩的方式来表示稀疏数组的数据,从而节约内存空间,SparseArray只能存储key为int类型的数据,同时,SparseArray在存储和读取数据时候...,使用的是二分查找法 //创建一个存储String值得SparseArray SparseArray sparseArray = new SparseArray();...//存储 注意key是int类型 sparseArray.put(1, "zhangsan"); sparseArray.put(2, "123456"); //通过int类型的key获取value...sparseArray.get(1); //第二个参数是默认值 sparseArray.put(2, "000000"); //获取索引处的key与value sparseArray.keyAt(1)

    83950

    Weekly 之 集合 专栏

    这次总结了个常见的集合思维导图: 这里面主要的知识点是 Java 集合中的 HashMap 与 Android 集合中 ArrayMap、SparseArray 的比较了,引用 Gityuan 的总结...: 数据结构 ArrayMap 和 SparseArray 采用的都是两个数组,Android专门针对内存优化而设计的 HashMap 采用的是数据+链表+红黑树 内存优化 ArrayMap 比 HashMap...更节省内存,综合性能方面在数据量不大的情况下,推荐使用 ArrayMap; Hash 需要创建一个额外对象来保存每一个放入 map 的 entry,且容量的利用率比 ArrayMap 低,整体更消耗内存 SparseArray...比 ArrayMap 节省1/3的内存,但 SparseArray 只能用于 key 为 int 类型的 Map,所以int类型的Map数据推荐使用 SparseArray; 性能方面: ArrayMap...查找时间复杂度 O(logN);ArrayMap 增加、删除操作需要移动成员,速度相比较慢,对于个数小于 1000 的情况下,性能基本没有明显差异 HashMap 查找、修改的时间复杂度为O(1); SparseArray

    51830

    【Java数据结构和算法】003-稀疏数组和队列

    一、稀疏数组sparsearray 1、一个实际的应用场景 编写的五子棋程序中,有存盘退出和续上盘的功能: 问题分析: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据,我们这个时候可以使用稀疏数组实现对二维数组的压缩...,确定二维数组的元素,赋值给二维数组; 6、稀疏数组与二位数组互转代码实现 二维数组转稀疏数组: 代码演示: package com.zb.ds; //二维数组转稀疏数组 public class SparseArray...= new int[sum+1][3]; //3、将二维数组的有效元素存到稀疏数组 //首元素 sparseArray[0] = new int[]{nums.length...[0][0]][sparseArray[0][1]]; //2、遍历稀疏数组,将对应的值存入二维数组 for (int i = 1; i sparseArray.length...; i++) { nums1[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2]; }

    7410

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券