集合复习笔记(中)

五,Map接口

 

六,总结实现类

(一)ArrayList 底层数数组

(二)Linkedlist 底层是双向链表

(三)Vector 底层是数组,线程安全,但是效率较低,一般不用了

(四)Hashset底层是hashmap,放到hashset里面的元素相当于放到了hasmap的key部分,

(五)Treeset底层是treemap,放到treeset集合中的元素相当于放到了tremap集合的key部分

(六)Hashmp底层是哈希表数据结构

(七)Treemap底层是二叉树数据结构,treemap的可可以自动按照大小顺序排序

(八)Hashtable底层也是哈希表,是线程安全的,效率较低

(九)Properties 是线程安全的,并且key和value的值只能存储string。

七、总结存储元素的特点

(一)List存储元素的特点

1.有序可重复

2.有序:存和取的顺序相同每个元素都有下标。

3.重复:可以存储重复内容。

(二)Set存储元素的特点

1.无序不可重复

2.无序:存和取的顺序不一定相同每个元素没有下标。

3.不可重复:不可以存储重复内容。

(三)Sortedset存储元素的特点

1.无序不可重复的

2.可以排序的

八,Collection

(一)父接口是iterable

(二)collection中的方法

  1. add()增添

  2. sIze() 获取集合中的元素个数

  3. clear清空集合

  4. contains() 判断集合里面是否不包含括号内元素

    • 如果要使用这个方法需要重写集合内元素中的equals方法,因为这个方法底层调用equals方法。

  5. remove(某个元素)删除集合中的某个元素

    • 底层调用了equals方法

    • 如果重写了equals被重写String s1=new string(“hello”);String s2=new string(“hello”);当s1和s2在同一个集合的时候。删除s1也会导致s2被删除

  6. isEmpty() 判断集合是否为空

  7. toArray将集合转换为数组

(三)Iterator

  1. 迭代器负责遍历集合中的元素,最初并没有指向第一个元素

  2. 要使用这个方法先要 像这样Collection b=new ArrayList();(等号后面也可以是hashlist,vector)

  3. 创建iterater,(不要打错了)Iterator it=a.iterator();

  4. Object odj=it.next();这个的作用是让迭代器前进以为,并将指向的内容返回。

  5. Object odj=it.next();这个的作用是让迭代器前进一位,并将指向的内容返回。

  6. 迭代器的位置很重要,集合里面的内容一旦改变,迭代器也重新获取,否则会报错。因此在迭代元素的过程中,不能对集合进行增删改的操作。但是可以使用迭代器删除。it.remove()。迭代器去删除的时候会自动更新迭代器。

九,list

(一)List集合元素的特点有序,可重复,有下标

(二)List特色方法(对于开发要多翻阅文档,要多理解里面的单词)

  1. add(int index,e element)在指定下标添加元素,

    • 这个使用的比较少效率比较低一般就直接使用add(e element)向末尾添加元素

    • 如果我们添加的元素是一个集合,不会将集合内的元素拆开,而是将集合作为一个元素。

    • addall 添加一个集合元素的时候会将内容拆开。

  2. E get() Set没有这个方法,是list集合特有的。返回列表中指定元素位置

  3. Int indexof 获取指定对象第一次出现的索引。Lastindexof获取元素最后一次出现的索引。

  4. Remove 也可以删除指定下标的元素。有相同的元素只会删除第一个。

  5. Set 更改指定位置的元素

  6. Retainall 求交集。

(三)List的实现类

  1. Arraylist(不是线程安全的

(1)集合的初始化容量是10(底层先创建了一个长度为零的数组,当添加一个元素的时候,初始化容量是10.)

(2)底层是object类的数组

(3)可以在创建的时候手动初始化,也可以直接将集合传进去,可以实现集合类型的转换。

 

注意:size获取的是当前集合里面的元素个数,而不是集合的容量。

(4)集合的扩容是原先的1.5倍。要尽可能少的扩容因为数组扩容的效率比较低。

(5)数组的优点,*检索的效率高,随机增删元素的效率比较低。不仅是因为有下标的原因,还是因为底层数组发挥作用*,但是数组向数组末尾添加效率是一样的。

(6)*Arraylist是使用较高的集合*。因为往数组末尾添加元素时添加效率不受影响。另外我们查询和检索的操作更多。

复习数组的缺点:

1)数组的随机增删效率低

2)数组无法存储大数据(很难找到一块连续的空间)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值