欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java学习笔记(一)

程序员文章站 2024-02-16 10:26:28
...


前言

\quad\quad集合类是 Java 数据结构实现,是 java.util 包下的重要内容,以不同的方式对元素进行分组,以及各种元素的操作方法。
\quad\quad集合类是可以用来存放多个对象的类,不同集合类拥有不同的手段,适合不同的场合。


集合

\quad\quad类似于用来存储对象数据的数组集合是能够用来存放对象的一种存储工具,特别是加入了泛型的使用,为我们数据的存储拓展了思路。


集合类分类

\quad\quadJava 的集合可以分为两大类:Collection 接口 和 Map 接口。
用我理解的来说,Collection 是单列集合, Map 是双列集合:用键值对来表示( 配对
\quad\quad其中,Collection 又能分别两个子接口 ListSet,如图:Java学习笔记(一)
Java学习笔记(一)

\quad\quad接下来的有关集合类的子类,可能会因为学习进度而部分内容尚未更新,比如 Vector 集合、 TreeSet 集合、 Hashtable 集合等,所以会有些内容上会有欠缺


Collection

\quad\quadCollection 表示一组对象,这些对象也称为 collection 的元素,在存储元素上,由于有了不同的需求,比如是否允许重复元素,是否需要有序之类的。
\quad\quad在java中,提供了 Collection 接口, Collection 接口分别由两个子接口 List 接口和 Set 接口进行了继承(extends):
Java学习笔记(一)


List

List extends Collection

\quad\quad List ,可以简单视之为双向连结串行,以线性列的方式管理物件集合。有以下特点:

  1. 索引
  2. 允许存储重复元素
  3. 有序集合,元素存取顺序一致

注意:防止索引越界异常

\quad常用方法:

public void add (int index, E element )//指定元素 添加到 指定位置;中间插入(区分于set)

public E get (int index) :  //返回 集合指定位置的 元素;

public E remove (int index) :  //移除集合 位置 中的元素,返回 被移除元素;

public E set (int index, E element ) : //用 指定元素 替换集合中 位置 的元素 ,返回 替换前 元素
......

Java学习笔记(一)


ArrayList

 ArrayList implements List

\quad\quad ArrayList 是 List 接口的实现类,是一个长度可变的数组,地址连续。
\quad\quad 有以下特点:

  • 是一个长度可变的数组
  • 底层是数组实现,查询快,增删慢
  • 有序,可重复
.contains(Object obj)//判断是否拥有 Obj,返回 true/ false

.clear();      // 清空集合

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

.size();        // 获取集合长度

.toArray();   //集合转数组,然后可以用遍历
......

LinkedList

 LinkedList implements List

\quad\quad LinkedList 也是 List 接口的实现类,由如下特点;

  • 底层是链表结构:查询慢,增删快;
  • 包含大量首位元素操作方法
.addFirst()

.addLast()

.getFirst()

.getLast()

.removeFirst()

.removeLast()

Vector


Set

Set extends Collection

\quad\quad注重独一无二,该体系集合不会存储重复的元素

Java学习笔记(一)
\quad\quadSet 有如下特点:

  • 不允许存储重复元素
  • 没有索引,索引方法也无,也不能使用普通for循环遍历
  • 无序,唯一

HashSet

HashSet  implements Set

HashSet 的特点:

  • 不允许存储重复元素
  • 没有索引,索引方法也无,也不能使用普通for循环遍历
  • 无序的集合(存取元素的顺序有可能不一致)
  • 底层是一个哈希表结构(查询非常快)

哈希表依赖两个方法:hashCode()equals()

LinkHashSet

LinkHashSet extends HashSet 

LinkHashSet 的特点:

  • 底层是哈希表(数组+链表/红黑树)+链表:多一条链表(记录元素存储顺序
  • 链表保证有序
  • 哈希表保证不重复

哈希表依赖两个方法:hashCode()equals()

TreeSet


Map

Java学习笔记(一)

\quad\quadCollections是单列集合,而Map是双列集合。
\quad\quad有如下特点:

  • 双列集合,每个元素包含键值对
  • key 不允许重复, value允许重复
  • key 与 value 一一对应

Map<k,v>,k 代表键,v代表值,一一对应。
Map 接口常用方法:

public V put (k key, v value )   //指定 键 与 值 添加到 Map 集合中,key重复与否有不同的操作

public V remove (Object key) //删除指定键对于的键值对,返回被删除值;不存在, null

public V get (Object key) // 获取集合中该键位对应的值

boolean containKey (Object key)  // 判断集合中是否有这个 键
...

HashMap

HashMap<k,v> implements Map<k,v>

\quad\quadHashMap 实现了 Map,底层是哈希表,有以下特点:

  • 查询速度很
  • 无序的集合,存取的元素顺序可能不一致

哈希表依赖两个方法:hashCode()equals()

LinkedHashMap

LinkedHashMap<k,v> extends HashMap<k,v>

\quad\quadLinkedHashMap : 哈希表+链表,有以下特点:

  • 元素唯一
  • 有序

Hashtable


参考资料

[1] https://www.bilibili.com/video/BV1uJ411k7wy?t=1015
[2] https://www.cnblogs.com/EasonJim/p/7967138.html
[3] https://www.cnblogs.com/111testing/p/8100101.html

相关标签: java