生活化的理解 Java 的容器

192 阅读2分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

没学之前,自己内心总会弱弱的害怕这个概念。因为面对男朋友这个 Java 老手,对自己学习进度的检测,他经常会问我:“学到容器了吗?” 我一方面抱有一种不服气的心态:没呢没呢,快学到了;另一方面,又隐隐觉得这是 Java 里很重要的概念,貌似很庞大,学了也容易忘啊。

开了个头发现,这种害怕啊,担心啊是多余的。

因为复杂的概念,总是由简单的、基本的概念堆积起来的。

(这句话说完,自我感觉非常良好,以至于加了引用😆) 其实我们之前已经接触过类似的概念了。我想一开始,都学过 String,而后呢,也学过了 StringBuilder 和 StringBuffer。其实他们就是 char 的“容器”呀。

他们实现了对 char 的收集、处理,更方便的使用,也有着线程安不安全的差异。

那么,正经的容器,同理,只不过放的是任意的数据类型。它在 String 这些概念的上一层,又抽象了一些罢了。做的事情也无非是增删改查。

难点在于,区分常见的、常用的容器。以及明白容器下的实现,各有什么特点,什么情况下用哪一种。

什么是容器

生活中,想到容器,就会想到什么碗🥣、杯子、盆、收纳箱等等。但是呢,优秀的整理家小能手,就会把同一类东西放在使用时对应的盆。比如,水果都放水果篮里,臭衣服都放脏衣篓里。

这样用的时候,只要知道要干嘛,就能很快的去执行。比如说:

  • 新买了脏衣篓,new了一个 脏衣篓;
  • 周一到周六,都在往里面堆东西,这个时候相当于脏衣篓.add(脏衣服i)
  • 周日了,执行一下 脏衣篓.clear()

Java 容器就是放同一数据类型的一种结构。

最常见的两个接口: Collection、Map。

Collection 下面最常用的有:

  • List

    最常见的有:ArrayList 、 LinkedList 和 Vector。

  • Set

最常见的:HashSet。

Map 最常用的:

  • HashMap。

大学学过数据结构的话,这些都非常好理解。就是不同数据结构的具体实现。

通用的方法调用(以 List 为例)

list 是一种有序的结构,有序就意味着存在索引。那么就可以通过对索引的操作,实现值的存和取。

1 add,增加一个元素: image.png

2 remove,删除操作,传 index 进去: image.png image.png 删除了索引为 2 元素。

3 set,赋值操作(修改): image.png

4 查找某个元素在列表的位置: image.png