本节:1. 掌握容器List、ArrayList、LinkedList、Map、HashMap容器
2.
容器的创建,增删查改
3. 不同容器的区别
Java
容器分为两大阵营:
Collection
和
Map
Collection
:主要是单个元素的集合,由
List
、
Queue
、
Set
三个接口区分不同的集合特征,然后由下面的
具体的类来实现对应的功能。
Map
:有一组键值对的存储形式来保存,可以用键对象来查找值。
下面我们从
Collection
的三个接口开始,介绍每一个实现类之间的特色,让大家在处理不同的数据时选择
合适的容器。
List
的特点就是所有的元素是
可以重复的。List
主要分为
ArrayList
和
LinkedList
,前者底层是使用数组实现的
List
,后者是使用链表实现的
List
。
![](https://i-blog.csdnimg.cn/blog_migrate/7b3036210ff03952676743992d68e706.png)
我这个容器里面放的类型必须和尖括号一样的类型,不然报错。
往容器添加东西。
从容器里面拿东西。要new对象,才有实例,才不会出现空指针异常。
foreach 循环:
LinkedList<>();适合修改的内容比较多的时候用;ArrayList<>();适合读内容比较多的时候使用。
常用方法
list.add(E e)
添加
list.get(int index)
获取第
index
个元素
list.remove(E e)
删除某个元素
list.remove(int index)
删除第
index
个元素
list.size()
获取容器的大小
list.isEmpty()
是否为空
list.clear()
清除所有元素
list.contains(E e)
是否包含该元素
list.set(int index, E e)
设置元素在
index
位置上
list.sort(Comparator<? super E> c)
排序
list.removeAll(Collection<E> es)
批量删除
list是表名。
collection是系统的一个接口。
![](https://i-blog.csdnimg.cn/blog_migrate/d6e74e143fa967eeaa2016c612306798.png)
容器排序
List
<
Book
>
books
=
new
LinkedList
<>
();
//
排序,使用匿名类
books
.
sort
(
new
Comparator
<
String
>
() {
@Override
public
int
compare
(
Book o1
,
Book o2
) {
return
o1
.
price
-
o2
.
price
;
//
升序排序
return o2.price - o1.price; ->
降序排序
}
});
導包: HashMap<>()
![](https://i-blog.csdnimg.cn/blog_migrate/21ed59bfd63628c687515983e5ed56fe.png)
三、
Map
Map
是使用
键值对
存储的一种结构,所以在处理列如单词统计等方面是杀手锏
Map
的键值对都可以为
null
Map
可以多维扩展。例如一个人拥有多个宠物,你可以这样定义:
Map< Person, List< pet>>
Object put(Object key, Object value):
放进一个键值对,返回值是被替换的值
Object remove(Object key)
void putAll(Map mapping)
void clear()
boolean containsKey(Object key)
是否包含某个键
boolean containsValue(Object value)
是否包含某个值
在
Map
中比较重要的是处理键值对的集合
public Set keySet()
:返回这个
Map
的所有键的集合,因为
Map
中键是唯一的,所以返回使用一个
set
public Collection values()
:返回这个
Map
的所有值的集合,因为值可能重复,所以返回一个
Collection
public Set entrySet()
:返回一个实现
Map.Entry
接口对象集合,使用这个方法可以遍历每一条记录
乱序循环输出
Map常用函數
Map遍历
HashMap更适合查找、删除、插入
TreeMap
更适合遍历。