【面试总结】Java集合你还没搞明白吗?看了这篇还不懂就不要学编程了

集合类的特点:类型可以不确定,大小可以不确定

使用场景:存储的数据要经常发生改变

常用集合

===================================================================

image

集合主要分为Collection和Map两大类:


Collection:是单列集合的顶层父类,是一个独立元素的序列,这些个元素都服从一条或者多条规则。

List必须按照插入的顺序保存元素,而Set不能有重复的元素。即Collection分为List和Set两大分支。 

【重点】

Collection:无序,可重复

List系列集合:有序,可重复,有索引。

– ArrayList:添加的元素是有序,可重复,有索引

– LinekdList:添加的元素是有序,可重复,有索引

Set系列集合:添加的元素是无序,不可重复,无索引

– HashSet:添加的元素是无序,不可重复,无索引

– LinkedHashSet:添加的元素是有序,不可重复,无索引

– TreeSet:按照大小默认升降序,不可重复,无索引

Map:存储方式key:value键值对

Conllection集合

============================================================================

什么是Conllection集合?

Conllection集合是所有集合的祖宗类,它的功能是全部集合都可以继承使用的

Conllection集合常用方法

| 方法名 | 说明 |

| — | — |

| public boolean add(E e) | 在集合末尾新增一个元素 |

| public void clear | 清空集合中的所有元素 |

| public boolean remove(E e) | 删除指定的元素,返回是否删除成功 |

| public boolean isEmpty() | 判断当前集合是否为空 |

| public boolean contains(Object obj) | 判断当前集合中是否包含指定的对象 |

| public Object[] toArray() | 把集合中的元素,存储到数组中 |

| public int size() | 返回集合中的元素个数 |

List集合

=====================================================================

ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。底层数据结构是数组,线程不安全。(它是我们用得非常非常多的一个集合)

实现方式:


ArrayList list = new ArrayList();//创建一个ArrayList集合,底层Object[] elementData初始化为{} 

list.add(new Person("张三",1));//第一次调用add()时,在底层创建了长度10的数组,并将数据张三添加到elementDate中 

定义存储类型


ArrayList<Person> list = new ArrayList<>();         //对象类型 

list.add("张三",1);									//加群1025684353一起吹水聊天



ArrayList<String> list = new ArrayList<>();         //String类型 

list.add("张三");



ArrayList<Integer> list = new ArrayList<>();         //包装类型  Boolean Byte Character Short Integer Long Float Double 

list.add(1); 

List集合常用方法:

| 方法名 | 说明 |

| — | — |

| public boolean add(E e) | 在集合末尾新增一个元素 |

| public boolean add(int index, E element) | 在指定位置添加元素 |

| public boolean remove(Object o) | 删除指定的元素,返回是否删除成功 |

| public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |

| public E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |

| public E get(int index) | 返回指定索引处的元素 |

| public int size() | 返回集合中的元素个数 |

| indexOf(Object o) | 查询指定元素的位置 lastIndexOf也一样,只是从尾部开始遍历 |

List集合常用方法的使用:


ArrayList<String> list = new ArrayList<>();

list.add("张三");          //添加一个元素

list.add(5,"张三");        //在指定索引处添加一个元素



list.remove("张三");       //删除一个元素

System.out.println(list.remove("张三"));  //删除一个元素并输出true|false

list.remove(1);            //删除指定索引处的元素



list.set(0,"李四");        //修改指定索引的元素,返回被修改的元素

							//加群1025684353一起吹水聊天

list.get(0);              //获取指定索引的元素



list.size();              //获取集合中元素个数



list.lidexOf("李四");     //获取指定元素的位置 

List遍历方式:


// 第一种遍历方式:普通for循环

for (int i = 0; i < arrayList.size(); i++) {

  System.out.println(arrayList.get(i));

}



// 第二种遍历方式:增强for循环

for (String string : arrayList) {

  System.out.println(string);

}

//加群1025684353一起吹水聊天

// 第三种遍历方式:迭代器

Iterator<String> iterator = arrayList.iterator();

while (iterator.hasNext()) {

  System.out.println(iterator.next());

} 

Map集合

====================================================================

Map集合结构体系

image

什么是Map集合?

Map集合是一种双列集合,每个元素包含两个值。

Map集合的每个元素的格式:key=value(键值对元素)。

Map集合的特点

1.Map集合都是由键决定的。

2.Map集合的键都是无序、不重复、无索引。

–Map集合后面重复的键对应的元素会覆盖前面的整个元素!

3.Map集合的值是无要求的。

4.Map集合的键值对都可以为null。

HashMap和LinkedHashMap的区别

HashMap:元素按照键是无序、不重复、无索引,值不做要求。

LinkedHashMap:元素按照键是有序、不重复、无索引、值不做要求。

Map集合使用:


1.Map集合存储的信息更加具体丰富。 

//Conllection:{“张三”,“男”,23,“中国”,“深圳”,“程序员”}

//Map:{name=“张三”,sex=“男”,age=23,country=“中国”,city=“深圳”,occupation=“程序员”}

Map<Person,String> maps = new HashMap<>

maps.put(new Person(“张三”,“男”,“23”),“中国”);


2.Map集合适合存储对象数据 

```



### [](https://gitee.com/vip204888/java-p7)**Map集合常用方法:**



| 方法名 | 说明 |

| --- | --- |

| public v put(K key, V value) | 把指定的键与指定的值添加到Map集合中 |

| public v remove(Object key) | 删除指定的值所对应的元素 |

| public boolean isEmpty() | 判断集合是否为空 |

| abstract int size() | 获取集合大小 |

| public v get(Object key) | 根据键获取指定元素 |

| public set keySet() | 获取Map集合中所有的键,存储到Set集合中 |

| public Conllection values() | 获取Map集合中所有的值,存储到Conllection集合中 |

| public set<Map.Entry<K,V>> entrySet() | 获取到Map集合中所有的键值对对象的集合(Set集合) |

| public boolean containKey(Object key) | 判断该集合中是否包含某个键 |

| public boolean containValue(Object value) | 判断该集合中是否包含某个值 |



### [](https://gitee.com/vip204888/java-p7)**Map用法**:



```

Map<String,Integer> maps = new HashMap<>();

maps.put("张三",1); 		//添加元素

maps.put(null,null);



maps.clear();			//清空集合



maps.isEmpty();				//判断集合是否为空,为空返回true,不为空返回false



maps.get("张三");			//根据键获取对应值	返回1



maps.size();			//获取集合大小



maps.remove("张三");			//根据键删除某个元素		返回1



maps.containsKey("张三");			//判断集合是否包含 张三 ,返回true或flase

								//加群1025684353一起吹水聊天

maps.containsValue(1);			//判断集合是否包含键 1 ,返回true或flase



//map集合的键是无序不重复的,所以返回的是一个Set集合

Set<String> keys = maps.keySet();//获取Map集合中所有的键,存储到Set集合中



//Map集合的值是不能做要求的,可能重复,所以要用Conllection集合接收!

Conllection<Integer> values = maps.values();//将maps集合中的值存入到Conllection集合中 

```



### [](https://gitee.com/vip204888/java-p7)**Map集合的遍历**:



map集合3中遍历方式:  

1.“键找值”的方式遍历:先获取Map集合全部的键,再根据遍历键找值。  

2.“键值对”的遍历方式:难度较大。  


# 最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了,需要的话请**[点赞后点击这里免费下载文章资料!](https://gitee.com/vip204888/java-p7)**

![](https://img-blog.csdnimg.cn/img_convert/b4d05fe6c4e6c4644885b688cc4b83d8.png)

![](https://img-blog.csdnimg.cn/img_convert/f60c07bf77518209bac3e83d62417a5e.png)

![](https://img-blog.csdnimg.cn/img_convert/fc5eead9998a8146314eba0c437ed046.png)

maps集合中的值存入到Conllection集合中 

```



### [](https://gitee.com/vip204888/java-p7)**Map集合的遍历**:



map集合3中遍历方式:  

1.“键找值”的方式遍历:先获取Map集合全部的键,再根据遍历键找值。  

2.“键值对”的遍历方式:难度较大。  


# 最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了,需要的话请**[点赞后点击这里免费下载文章资料!](https://gitee.com/vip204888/java-p7)**

[外链图片转存中...(img-GrnKfaSw-1628143401140)]

[外链图片转存中...(img-lRu2FibB-1628143401142)]

[外链图片转存中...(img-DNP1rw33-1628143401143)]

![](https://img-blog.csdnimg.cn/img_convert/5a568e0c1fe5600ca346b47e41b0d816.png)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值