Java集合-Python数据结构比较

Java list与Python list相比较

Java List:有序的,可重复的。(有序指的是集合中对象的顺序与添加顺序相同)

Python list(列表)是有序的,可变的。

Java List分类:

   ---ArrayList:底层使用数组,线程不安全,查找速度快,增删速度慢

                      在迭代过程中,对集合对象的增删会出现异常

   ---LinkedList:底层使用链表,线程不安全,查找速度慢,增删速度快

                      后进先出,类似于栈

   ---Vector:     底层使用数组,线程安全,查找速度快,增删速度慢,被ArrayList替代

Python 列表无分类,list是Python的基本数据结构。

方法Java ListPython 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 MapPython 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 SetPython 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()
更新谈不上更新谈不上更新

 

转载于:https://www.cnblogs.com/kingofkai/p/5901494.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值