Java集合-Python数据结构比较
Java list与Python list相比较
Java List:有序的,可重复的。(有序指的是集合中对象的顺序与添加顺序相同)
Python list(列表)是有序的,可变的。
Java List分类:
---ArrayList:底层使用数组,线程不安全,查找速度快,增删速度慢
在迭代过程中,对集合对象的增删会出现异常
---LinkedList:底层使用链表,线程不安全,查找速度慢,增删速度快
后进先出,类似于栈
---Vector: 底层使用数组,线程安全,查找速度快,增删速度慢,被ArrayList替代
Python 列表无分类,list是Python的基本数据结构。
| 方法 | Java List | Python list:[1,'2',3] | Python tuple:(1,2,3) |
| 增加到末尾 | boolean add(E e); | list.append('大帝') | 不可变 |
| 增加到指定位置 | void add(int index, E element); | list.insert(2,'大帝') | 不可变 |
| 长度 | int size(); | len(list) | 与list相同 |
| 更新 | E set(int index, E element); | list[i]='大帝' | 不可变 |
| 删除 | E remove(int index); | list.pop(i) | 不可变 |
| 删除所有 | void clear(); | list.clear() | 不可变,可以使用del删除元组 |
| 查找 | E get(int index); | list[i] | 与list相同 |
Java Map与Python dict相比较
Java Map属于集合,但不属于Collection体系中一部分,无序的,不可重复,以键值对形式存在。
Python dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度,dict的key必须是不可变对象,因为dict根据key使用哈希算法来计算value的存储位置。
Java Map分类:
--- HashMap:底层使用的数据结构是哈希表
保持键的唯一性同HashSet相同。
--- TreeMap:底层使用的数据结构是二叉树
保持键的唯一性同TreeSet相同。
Python 字典无分类,dict是Python的基本数据结构。
| 方法 | Java Map | Python dict:{'1':'1','2':'2'} |
| 增加 | V put(K key, V value); | dict['1']='大帝' |
| 删除 | V remove(Object key); | del dict['1'] |
| 更改 | 和增加相同,若键相同,会覆盖原值 | dict['1']='国王' |
| 查找 | V get(Object key); | dict['1'] |
Java Set与Python set相比较
Java Set底层使用的就是Java Map的键,值被设置为空,因此Set与Map保持唯一性的原理是相同的。
Python set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
Java Set:无序,不可重复
---HashSet:底层使用哈希表,线程不安全
保证对象唯一的方式:重写hashcode(),equals(Object obj).使用哈希算法导致无序
---TreeSet:底层使用二叉树,线程不安全
在使用add方法添加对象时,会对加入集合的对象进行排序
保证对象唯一的方式:1 实现Comparable<E>接口,实现compareTo()方法的返回值是0,则不能加入。2 创建一个类,实现Comparator<T>,实现compare() 方法。
Python 集合无分类,set是Python的基本数据结构。
| 方法 | Java Set | Python set |
| 创建 | 传入一个list:set([1,2,3])或者直接s={1,2,3} | |
| 增加 | boolean add(E e); | s.add(4) |
| 删除 | boolean remove(Object o); | s.remove(4)/s.pop() |
| 更新 | 谈不上更新 | 谈不上更新 |
Java集合-Python数据结构比较的更多相关文章
- 给jdk写注释系列之jdk1.6容器(13)-总结篇之Java集合与数据结构
是的,这篇blogs是一个总结篇,最开始的时候我提到过,对于java容器或集合的学习也可以看做是对数据结构的学习与应用.在前面我们分析了很多的java容器,也接触了好多种常用的数据结构,今天 ...
- JAVA (集合和数据结构)
Collection和Collections的区别: 1.java.util.Collection 是一个集合接口.它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类 ...
- java与python数据结构对比
- java中的数据结构(集合|容器)
对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)
横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...
- Python数据结构之四——set(集合)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...
- Java的数组,集合,数据结构,算法(一)
本人的愚见,博客是自己积累对外的输出,在学习初期或自己没有多少底料的情况下,与其总结写博客不如默默去搞自己的代码,但是学到集合这一块时,数组,集合,数据结构,算法这个概念搞的我比较混淆,所以不得已写这 ...
- Java 集合框架(常用数据结构)
早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...
- 一起学 Java集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
随机推荐
- vue.js几行实现的简单的todo list
序:目前前端框架如:vue.react.angular,构建工具fis3.gulp.webpack等等...... 可谓是五花八门,层出不穷,眼花缭乱...其实吧只要你想玩还是可以玩玩的..下面是看了 ...
- Android中的多线程断点下载
首先来看一下多线程下载的原理.多线程下载就是将同一个网络上的原始文件根据线程个数分成均等份,然后每个单独的线程下载对应的一部分,然后再将下载好的文件按照原始文件的顺序"拼接"起来就 ...
- 08讲browse命令的使用技巧
.浏览所有parts ,使用技巧 .浏览所有 nets,使用技巧 在上图中选择nets .浏览所有 offpage connector,使用技巧 如上 .浏览所有 DRC makers,使用技巧 5. ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- Windows10自适应和交互式toast通知[1]
阅读目录: 概述 toast通知的结构 视觉区域(Visual) 行为(Actions) 特定场景下的Toast通知 带多内容的通知 带行为的通知(例子1) 带行为的通知(例子2) 带文本输入框和行为 ...
- Webgl的2D开发方案(一)spritebatcher
使用TypeScript 和 webgl 开发 第一步:实现了SpriteBatcher 例子如下 http://oak2x0a9v.bkt.clouddn.com/test/index.html ...
- ASP.NET MVC Model元数据(二)
ASP.NET MVC Model元数据(二) 前言 在上篇中,给大家留个对Model元数据的印象,并没有对Model元数据有过多的讲解,而在本篇中也不会对Model元数据的本身来解释,而是针对于它的 ...
- ABP(现代ASP.NET样板开发框架)系列之23、ABP展现层——异常处理
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之23.ABP展现层——异常处理 ABP是“ASP.NET Boilerplate Project (ASP.NET ...
- Vue 给子组件传递参数
Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...
- 特殊的数据类型: bit、sql_variant、sysname
在SQL Server中,特殊的数据类型主要有三个,分别是:bit.sql_variant 和 sysname 一,bit bit类型,只有三个有效值:0,1 和 null,字符串true或false ...