java(Day15)----List,Set,ArrayList,TreeSet

1.List与Set的区别

  1.1List提供的方法

  

Void add(int index, Eelement)

作用:将元素添加到list指定的位置

参数:

Index:插入的位置

Element:添加的元素

Boolean addAll(int index,collection <E>c)

作用:将一个集合的数据添加到指定位置

参数:

  Index:插入的位置

  C:添加的集合

   删

E remove(int index)

  作用:删除指定位置的元素

  参数:

    Index:指定的位置

  返回值:被删除的元素

  

E set(int index,E element)

  作用:修改指定位置的元素

  参数:

    Index:修改的位置

    Element:修改后的元素

  返回值:

    修改前该位置的元素

  

E get(int index)

  作用:获取指定位置的元素

  参数:

    Index:指定的位置

  返回值:

    指定位置的元素

  注意:取出该元素后,该元素依然在集合存在

Int indexof(Object o)

  作用:查询元素在集合中的位置

  参数:

    o:查询的元素

  返回值:

    元素在集合中的位置

  注意:如果查询的元素在集合中不存在返回-1

Int lastindexof(Object o)

作用:查询元素在集合中最后一次出现的的位置

  参数:

    o:查询的元素

  返回值:

    元素在集合中最后一次出现的位置

  注意:如果查询的元素在集合中不存在返回-1

List<E> subList(int fromIndex,int toIndex)

  作用:截取集合中一段元素

  参数:

   int fromIndex:开始位置

int toIndex:结束位置

  返回值:

   截取的元素集合

  注意:

  1. 截取的元素包含开始位置,不包含结束位置
  2. 不会影响原集合的数据

2.常用子类

2.1ArrayList

  数据结构:数组

  特点:查询速度快,增删速度慢,线程不安全的

  时间:jdk1.2

2.2LinkedList

  数据结构:数组

  特点:查询速度慢,增删速度快

  时间:jdk1.2

2.3Vector

  数据结构:数组

  特点: 查询速度快,增删速度慢,线程安全的

  时间:jdk1.0

注意:List的子类没有提供特有方法

3.Set

3.1 Set提供的方法

  没有提供特有的方法,所有的方法都来自collection

 特点:

  无序,无下标,元素不可重复

 3.2常用的子类

HashSet

  数据结构:

  1.8以前:数组+链表

1.8及以后:数组+红黑树

  注意:

      Hashset中数据前后顺序是根据存储的对象的hashcode值决定的

  存储原理:

      存储对象时,先调用对象的hashcode方法,获取对象的hashcode值,使用该hashcode值与集合中已经存储的对象的hashcode值进行比较,如果不相同,直接存储(在红黑树的结构中),如果有相同,在调用equals方法与相同的对象进行比较,如果不相同,存储到集合中(在数组中存储),如果equals方法结果为true表示相同,hashset集合会认为两个对象相同,不在存储第二个对象.

LinkedHashset

  数据结构:

1.8以前:数组+链表+链表

1.8及以后:数组+红黑树+链表

注意:LinkedHashset多出的链表是用来记录数据的存储顺序,;所以LinkedHashset是有序的

TreeSet

  数据结构:红黑树

  注意:

Treeset存储数据时要么数据拥有比较性,要么创建Treeset时指定比较器,让数据拥有比较性

就是让存储的数据所属的类实现Comparable接口

注意:实现comparteble方法就要重写compartorTo方法

  指定比较器

在创建Treeset集合时,传入实现了compartor的接口对象

4.数据结构

栈:先进后出

队列:先进先出

数组:

  特点:

在内存中连续开辟一片空间,所以在寻找数组中所有数据计算机遍历一次内存即可,所以查询速度快

但是因为所有数据在同一片区域,此时如果给其中插入或删除一个数据,那么后面的数据位置都将需要修改,所以增删速度慢

链表:

  单链表

    特点:前一个数据中存储下一个数据的位置

  双链表

特点: 前一个数据中存储上一个与下一个数据的位置

红黑树:二叉树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值