Java基day15

  • List接口中特有方法:

    添加
    add(int index, E element)
    addAll(int index, Collection<? extends E> c)
    获取:
    get(int index)
    indexOf(Object o)
    lastIndexOf(Object o)
    subList(int fromIndex, int toIndex)
    修改:
    set(int index, E element)

    迭代
    listIterator()

List接口中特有的方法具备的特点: 操作的方法都存在索引值。

只有List接口下面的集合类才具备索引值。其他接口下面的集合类都没有索引值。

  • ListIterator特有的方法:

    添加:
    hasPrevious() 判断是否存在上一个元素。
    previous() 当前指针先向上移动一个单位,然后再取出当前指针指向的元素。

    next(); 先取出当前指针指向的元素,然后指针向下移动一个单位。

    add(E e) 把当前有元素插入到当前指针指向的位置上。
    set(E e) 替换迭代器最后一次返回的元素。

  • List的实现类:
    ArrayList:ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。
    LinkedList: LinkedList底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。

  • Linkedlist特有的方法:
    1:方法介绍
    addFirst(E e) 把元素添加到集合的首位置上。
    addLast(E e) 把元素添加到集合的末尾处。

    getFirst() 获取集合中首位置的元素:
    getLast() 获取集合中末尾的元素

    removeFirst() 删除集合中的首位置元素并返回
    removeLast() 删除集合中的末尾素并返回

    2:数据结构
    1:栈 (1.6) : 主要是用于实现堆栈数据结构的存储方式。
    先进后出
    push()
    pop()
    2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。
    先进先出
    offer()
    poll()

    3:返回逆序的迭代器对象
    descendingIterator() 返回逆序的迭代器对象

  • Set的实现类:
    1.HashSet : 底层是使用了哈希表来支持的,特点: 存取速度快.

HashSet的实现原理:
往Haset添加元素的时候,HashSet会先调用元素的hashCode方法得到元素的哈希值 ,
然后通过元素 的哈希值经过移位等运算,就可以算出该元素在哈希表中 的存储位置。

情况1: 如果算出元素存储的位置目前没有任何元素存储,那么该元素可以直接存储到该位置上。

情况2: 如果算出该元素的存储位置目前已经存在有其他的元素了,那么会调用该元素的equals方法与该位置的元素再比较一次
,如果equals返回的是true,那么该元素与这个位置上的元素就视为重复元素,不允许添加,如果equals方法返回的是false,那么该元素运行 添加。

2.TreeSet:
TreeSet 如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。

TreeSet要注意的事项:
1. 往TreeSet添加元素的时候,如果元素本身具备了自然顺序的特性,那么就按照元素自然顺序的特性进行排序存储。
2. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,那么该元素所属的类必须要实现Comparable接口,把元
的比较规则定义在compareTo(T o)方法上。

  1. 如果比较元素的时候,compareTo方法返回 的是0,那么该元素就被视为重复元素,不允许添加.(注意:TreeSet与HashCode、equals方法是没有任何关系。)

  2. 往TreeSet添加元素的时候, 如果元素本身没有具备自然顺序 的特性,而元素所属的类也没有实现Comparable接口,那么必须要在创建TreeSet的时候传入一个比较器。

  3. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,而元素所属的类已经实现了Comparable接口, 在创建TreeSet对象的时候也传入了比较器
    那么是以比较器的比较规则优先使用。

如何自定义定义比较器: 自定义一个类实现Comparator接口即可,把元素与元素之间的比较规则定义在compare方法内即可。

自定义比较器的格式 :

class 类名 implements Comparator{

}

推荐使用:使用比较器(Comparator)。

  • TreeSet是可以对字符串进行排序 的, 因为字符串已经实现了Comparable接口。

字符串的比较规则:

情况一: 对应位置有不同的字符出现, 就比较的就是对应位置不同的字符。

情况 二:对应位置上 的字符都一样,比较的就是字符串的长度。

发布了27 篇原创文章 · 获赞 0 · 访问量 525

猜你喜欢

转载自blog.csdn.net/byzcy/article/details/102986850