java中实际集合

HashSet 意气风发种未有再一次成分的冬季汇集

7.  EunmMap  枚举类型的映射表

 list l = new ArrayList();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 for (Iterator iter = l.iterator(); iter.hasNext();) {
  String str = (String)iter.next();
  System.out.println(str);
 }
 /*迭代器用于while循环
 Iterator iter = l.iterator();
 while(iter.hasNext()){
  String str = (String) iter.next();
  System.out.println(str);
 }
 */

Python内置的数据结构

Python语言轻易,能够用很少的代码达成平等的作用。那在这之中Python内置的数据结构(能够统称为容器container)功不可没,首假若序列映射以及集合三类入眼的容器,最常用的为以下多少个子类:

  • 澳门新萄京,list
  • tuple
  • dict
  • set

PriorityQueue 生机勃勃种能够飞速去除最小元素的集聚

3.HashSet  未有再一次成分的冬季汇聚

*   * 全部的JAVA集结都位居 java.util包中!
    JAVA集结只好存放援引类型的的数码,无法存放基本数据类型.
    JAVA集合首要分为三连串型:
    Set(集)
    List(列表)
    Map(映射)
    Collection 接口
   
Collection是最主旨的集纳接口,表明了适用于JAVA集结(只囊括Set和List)的通用方法。
    Set 和List 都持续了Conllection,Map未有
    Collection接口的章程:
    boolean add(Object o卡塔尔   :向聚聚焦步向叁个对象的引用
    void clear(卡塔尔国                       
:删除集结中全数的靶子,即不再抱有那些目的的援用
    boolean isEmpty(卡塔尔国           :判别会集是或不是为空
    boolean contains(Object o卡塔尔: 推断集结中是不是富有一定对象的引用
    Iterartor iterator(卡塔尔国              :
重返多个Iterator对象,能够用来遍历集结中的成分
    boolean remove(Object o卡塔尔:从集结中删除叁个对象的引用
    int size(卡塔尔国                               :再次来到会集瓜时素的数码
    Object[] toArray(卡塔尔国                
:重回一个数组,该数组中回顾集结中的全部因素
    关于:Iterator(卡塔尔国 和toArray(卡塔尔(英语:State of Qatar)方法都用于会集的享有的要素,后面一个重临三个Iterator对象,前者再次回到一个分包会集中具有因素的数组。
    Iterator接口表明了之类方法:     hasNext(卡塔尔(قطر‎: 推断集结瓜时素是还是不是遍历完成,若无,就赶回true
    next(卡塔尔(قطر‎       :重回下三个要素
    remove(卡塔尔(英语:State of Qatar):从集结中删去上八个有next(卡塔尔(英语:State of Qatar)方法重临的成分。
    Set(集合):
   
Set是最简单易行的大器晚成种会集。集结中的对象不按一定的艺术排序,并且没有重新对象。
    Set接口重要完毕了七个贯彻类:
    HashSet : HashSet类遵照哈希算法来存取集合中的对象,存取速度十分的快
    TreeSet   :
TreeSet类完毕了SortedSet接口,能够对聚聚集的对象进行排序。
    Set 的用法:     寄放的是指标的援引,未有再一次对象
   

目录

LinkHashSet 大器晚成种能够记住成分插入次序的聚焦

1.ArrayList   能够动态增进和压缩的目录种类

迭代器应用:

  • Python内置的数据布局
    • 序列Sequence
    • 映射Mapping
    • 集合Sets

LinkedList 后生可畏种能够在此外职责张开连忙地插入和删除操作的不改变种类

8.EnumSet   包涵枚举类型值的值

 

映射Mapping

  • dict:字典
    • dict内置函数如下:
      • copy:再次来到三个字典的浅复制
      • fromkeys:以内定系列为键创设三个新字典,值都是意气风发致的,使用境况很特定
      • update:以键批量更新的不二诀窍,(相符的立异,贫乏的补偿)
      • get:重回钦点键的值,假如值不在字典中回到default值
      • setdefault:和get(卡塔尔(英语:State of Qatar)相同,
        但借使键不设有于字典中,将会增多键并将值设为default
      • pop:删除字典给定键 key
        所对应的值,再次来到值为被去除的值;key值必需付出,否则重临default值
      • popitem:随机重回并删除字典中的一对键和值
      • clear:删除字典内全数因素,变为{}
      • items
      • keys
      • values

# 键必须是唯一的,但值则不必。# 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组# d = {key1 : value1, key2 : value2 }dict1 = { 'abc': 456,'sss':'sss',100:100 }dict2 = { 'abc': 123, 98.6: 37, 'sss':['a',3,5] }dict3 = dict.fromkeys([1,2,3], [1,2,3])   # {1: [1, 2, 3], 2: [1, 2, 3], 3: [1, 2, 3]}# 访问/取值,依靠键dict2['abc']       # 返回123dict2.get('abc','no')   # 效果一样,但如果建不存在,会方法默认值,这里设为no,默认值的参数默认是Nonedict2.setdefault('s','sd') # 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default,default默认为None# 批量更新dict2.update # 相同的键,就更新值,缺少的键,直接增补print        # {98.6: 37, 100: 100, 'abc': 456, 'sss': 'sss'}# 删除print(dict2.pop("abc")) # 指定键,进行删除,并返回该键对应的值,如果键不存在,直接报错print(dict2.popitem  # 随机删除一对键值,并返回该对键值的元组形式# 遍历for k,v in dict2.items():    print(k,":",v)for k in dict2.keys():    printfor v in dict2.values():    print

请必须注意,dict内部存放的生龙活虎意气风发和key放入的后生可畏一是还没涉嫌的

和list相比,dict有以下多少个性子:

  1. 检索和插入的快慢一点也不慢,不会趁着key的加多而变慢
  2. 亟待占用多量的内部存款和储蓄器,内部存款和储蓄器浪费多

而list相反:

  1. 查找和插入的时日随着成分的加码而充实
  2. 并吞空间小,浪费内部存款和储蓄器相当少

于是,dict是用空间来换取时间的生龙活虎种方法

dict能够用在须求快捷查找的居多地方,在Python代码中大致无处不在,正确行使dict相当的重大,需求记住的率先条正是dict的key必需是不可变对象

那是因为dict依据key来测算value的积攒地方,假诺每回计算同生机勃勃的key得出的结果差异,那dict内部就全盘混乱了。那么些通过key计算地点的算法称为哈希算法

LinkedHashMap 生龙活虎种能够记住插入次序的照射

13.IdentityHashMap   用==实际不是equals对比键值的映射表

在Java中运用Set,能够事半功倍地将须要的品种以聚众类型保存在三个变量中.首要行使在呈现列表.Set是三个不分包重复成分的
collection。更适于地讲,set 不包涵知足 e1.equals(e2卡塔尔(قطر‎ 的要素对 e1 和
e2,何况最多含有一个 null 成分。

序列Sequence

  • list:列表,有序的 可变 序列
  • tuple:元组,有序的 不可变 序列
  • str:字符组成的 有序的 不可变 类别,字符可使用编码来明白
  • bytes:字节组成的 有序的 不可变 种类
    • (不相同:字符串是字符组成的队列,以二个字符为单位;字节体系是字节组成的类别,以字节为单位卡塔尔
  • bytearray:字节组成的 有序的 可变 系列

小能力:查看三个类的放手药方法

for _def in dir:    if "__" in _def:   # 内部方法跳过        continue    else:        print

相对来说list和tuple的结果如下:

append clear copy count extend index insert pop remove reverse sort
list y y y y y y y y y y y
tuple y y

PS:元组只不过是可读的列表,并由[]改为()

# 定义empty_list = []num_list = [1,2,3,4,5,6,7,8,9,10]mix_list = [1,"str",[1,2],[3,4]]empty_tuple = ()num_tuple = (1,2,3,4,5,6,7,8,9,10)mix_tuple = (1,"str",,[3,4])# 增empty_list.append("a")       # 插入元素,默认末端插入empty_list.append("b")empty_list.insert(0,"e")     # 指定位置插入元素empty_list.insert(-1,"e")empty_list.extend(["c","d"]) # 扩展,在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)empty_list.append(["c","d"])# 拼接print(num_list + mix_list)   # 拼接两个listprint(num_list * 3)          # 拼接三个相同的list# 删empty_list.remove("e") # 指定元素删除,# 移除列表中某个值的第一个匹配项empty_list.pop()       # 弹栈,删除末端的一个元素del(empty_list[-1])    # 非list内置方法del(empty_list)        # 整个对象删除,连变量名都不存在了empty_list.clear()     # 清空,变成空的列表[],变量还是存在的;与del不同,del后对象是不存在的,使用该变量的花会直接报错# 改empty_list[0] = 'change' # 查--切片printprint(num_list[0:2])print(num_list[:2])print(num_list[7:])print(num_list[7:-1])print(num_list[-3:])print(num_list[-3:-1])print(num_list[10:])print(num_list[0:-1:3]) # 间隔切片print(num_list[::3])    # 间隔切片# 查--检验print(4 in mix_list)print(4 in mix_list[-1])print(1 not in mix_list)# 查--计数print(len)        # 查看整个list的元素数量print(num_list.count   # 查看指定元素的数量# 查cmp(list1, list2)           # 比较两个列表的元素print(num_list          # 从列表中找出某个值第一个匹配项的索引位置print(len)        # 查看整个list的元素数量print(min)        # 返回列表元素最小值print(max)        # 返回列表元素最大值# 对象的复制num_copy = num_list.copy()  # 使用copy才会在内存中开辟新的内存去存储num_copy的值num_copy = num_list         # 简单的赋值语句只不过是两个不同的变量名指向同一块内存,感觉上就是改变一个,另一个也改变num_copy = list        # 将元组转换为列表# 顺序操作num_list.reverse()          # 反向列表中元素printnum_list.sort()             # 对原列表进行排序,模式升序,配合reverse(),升降序就都实现了print

ArrayList 大器晚成种能够动态增进和压缩的目录体系

14.LinkedHashSet  能够记住插入次序的聚集

 Set set=new HashSet();
    String s1=new String("hello");
    String s2=s1;
    String s3=new String("world");
    set.add(s1);
    set.add(s2);
    set.add(s3);
    System.out.println(set.size());//打印集合中对象的数目 为 2。

集合Sets

  • set:可变集结
    • set和dict相像,也是生龙活虎组key的群集,但不存款和储蓄value;那一个key既不重复,也冬日
  • frozenset:不可变集结
set frozenset 说明
add y
clear y y
copy y
difference y y
difference_update y
discard y
intersection y y
intersection_update y
isdisjoint y y
issubset y y
issuperset y y
pop y
remove y
symmetric_differen y y
symmetric_difference_update y
union y y
update y

参考:

TreeSet 生机勃勃种有序集

12.WeakHashMap  能够被垃圾回笼期回笼的映射表

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图