记忆薄弱的知识点

LinkedList
3.2 LinkedList集合
java.util.LinkedList集合数据存储的结构是链表结构。链表结构有表头和表尾,特有方法都是围绕头和尾进行操作的。方便元素添加、删除的集合。
LinkedList是一个双向链表,那么双向链表是什么样子的呢,我们用个图了解下
实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。这些方法我们作为了解即可:

  • public void addFirst(E e):将指定元素插入此列表的开头。
  • public void addLast(E e):将指定元素添加到此列表的结尾。
  • public E getFirst():返回此列表的第一个元素。
  • public E getLast():返回此列表的最后一个元素。
  • public E removeFirst():移除并返回此列表的第一个元素。
  • public E removeLast():移除并返回此列表的最后一个元素。
  • public E pop():从此列表所表示的堆栈处弹出一个元素。
  • public void push(E e):将元素推入此列表所表示的堆栈。
  • public boolean isEmpty():如果列表不包含元素,则返回true。
    LinkedList是List的子类,List中的方法LinkedList都是可以使用,这里就不做详细介绍,我们只需要了解LinkedList的特有方法即可。在开发时,LinkedList集合也可以作为堆栈,队列的结构使用。

2.2 HashSet集合存储数据的结构
HashSet之所以不能保证对象的存取顺序是因为,对象的存储的下标位置是根据对象的哈希值来确定的。哈希值和数组的组合结构称为哈希表,它的底层还维护了链表结构或红黑树结构。
而集合之所以能够保证对象唯一,主要依赖于:hashCode()与equals()方法。
哈希值:
哈希值指的是对象通过调用Object类中的hashCode()方法,从而获取到的一个十进制的数值。哈希值是由系统随机给出的,其实它就是对象的内存地址。只不过不是以十六进制表示,而是一个逻辑地址。如果两个对象的哈希值是一样的,我们称为hash冲突。

运用的方式是数组加链表加红黑树。

在JDK1.8之前,哈希表底层采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个链表中的元素较多时,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,哈希表存储采用数组+链表+红黑树实现,当链表长度超过8时,会将链表转换为红黑树,这样大大减少了查找时间。

在HashSet下面有一个子类java.util.LinkedHashSet,它是链表和哈希表组合的一个数据存储结构。在保证对象唯一的前提下,还能够保证对象的存取顺序。

只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。
JDK1.5以后。出现了简化操作。… 用在参数上,称之为可变参数。
同样是代表数组,但是在调用这个带有可变参数的方法时,不用创建数组(这就是简单之处),直接将数组中的元素作为实际参数进行传递,其实编译成的class文件,将这些元素先封装到一个数组中,在进行传递。这些动作都在编译.class文件时,自动完成了。

构造方法:
TreeSet() : 空参构造方法
TreeSet(Comparator comparator):接收比较器的构造方法,可以传递比较器,规定具体的比较方式。

1.5 Entry键值对对象

public Set<Map.Entry<K,V>> entrySet(): 获取集合中所有的键值对对象,保存到Set集合中。
我们已经知道,Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系,这一对对象又称做Map中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

既然Entry表示了一对键和值,那么也同样提供了获取对应键和对应值得方法:

public K getKey():获取Entry对象中的键。
public V getValue():获取Entry对象中的值。
操作步骤与图解:

获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。方法提示:entrySet()。

遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象。

通过键值对(Entry)对象,获取Entry对象中的键与值。 方法提示:
getkey()
getValue()

如果要保证map中存放的key和取出的顺序一致,可以使用java.util.LinkedHashMap集合来存放。
另外在Map集合中还提供了一个静态方法values(),它的作用是将Map集合中的所有value值保存到一个Collection集合中,通过遍历Collection集合就可以获取到Map集合中的所有value值。

猜你喜欢

转载自blog.csdn.net/u014452148/article/details/85927519