Java集合-Python数据结构比较
2016-09-23 20:06
891 查看
Java list与Python list相比较
Java List:有序的,可重复的。(有序指的是集合中对象的顺序与添加顺序相同)
Python list(列表)是有序的,可变的。
Java List分类:
---ArrayList:底层使用数组,线程不安全,查找速度快,增删速度慢
在迭代过程中,对集合对象的增删会出现异常
---LinkedList:底层使用链表,线程不安全,查找速度慢,增删速度快
后进先出,类似于栈
---Vector: 底层使用数组,线程安全,查找速度快,增删速度慢,被ArrayList替代
Python 列表无分类,list是Python的基本数据结构。
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 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 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属于集合,但不属于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底层使用的就是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() |
更新 | 谈不上更新 | 谈不上更新 |
相关文章推荐
- paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较
- paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较
- 『Python CoolBook』数据结构和算法_字典比较&字典和集合
- Perl、PHP、Python、Java和Ruby的比较
- 【转】语言简评:比较Perl、PHP、Python、Java和Ruby
- Perl、PHP、Python、Java和Ruby的比较
- Perl、PHP、Python、Java和Ruby的比较
- Java常用单线程数据结构比较
- Java集合体系结构分析与比较
- Java集合的数据结构
- Java第八课 Java中的集合类的讲解,栈、对列、链表等数据结构的讲解。
- Perl/PHP/Python/Java/Ruby的拟人课堂讨论-比较各门编程语言的情况
- java的集合与数据结构
- 比较Perl、PHP、Python、Java和Ruby 【转载】
- Java 中常用集合性能比较
- Java集合排序及java集合类详解:集合框架中常用类比较
- C,Ruby, Io, PHP, Python, Lua, Java, Perl, Applescript, TCL, ELisp, Javascript, OCaml, Ghostscript性能比较
- 脚本语言性能比较:Ruby,Io,PHP,Python,Lua,Java,Perl...
- Java,Perl,Python 比较
- Perl/PHP/Python/Java/Ruby的拟人课堂讨论-比较各门编程语言的情况