Java集合框架用法用例详解

单列集合 Collection

> 💡 Tips:Collection 代表单列集合,每个元素(数据)只包含一个值; > > 应对不同的业务场景需要,衍生很多实现类; > > ![](https://i-blog.csdnimg.cn/img_convert/a0f7a9993ab15664a63347b3b8dfd939.png) >

Collection集合的常见方法

![](https://i-blog.csdnimg.cn/img_convert/7bb44c8b3a901c39bd1a99ad860879b0.png)

遍历集合的方法

1. 迭代器遍历; 2. 增强for循环遍历; 3. lambda表达式遍历;

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

![](https://i-blog.csdnimg.cn/img_convert/5c13dc2974b642595cea1715adb784df.png)

ArrayList:基于数组,查询快,增删慢

![](https://i-blog.csdnimg.cn/img_convert/a87fb08144cbac4bf674c41dff1a8960.png)

LinkedList:基于双链表,查询慢,增删快

![](https://i-blog.csdnimg.cn/img_convert/a603fd2ec8fe04efec8af7b15ff77585.png)

Set:不重复、无索引

![](https://i-blog.csdnimg.cn/img_convert/5949978fe867967be5a9e1dde57853cf.png)

哈希值

![](https://i-blog.csdnimg.cn/img_convert/1c332db6e06c76a6a069a5ddf28d1318.png)

HashSet:基于哈希表:数组+链表+红黑树;增删改查都较快

![](https://i-blog.csdnimg.cn/img_convert/dcc3bdee82c9c5f996f0dd5ac199714e.png)![](https://i-blog.csdnimg.cn/img_convert/8cd72ae76d829675d47ca40127ddaf6a.png)

LinkedHashSet:基于哈希表:数组+双链表+红黑树;有序、不重复、无索引;

![](https://i-blog.csdnimg.cn/img_convert/0b0c83ecd41f0fd3001b6667119a9b00.png)

TreeSet:不重复、无索引、可排序(默认升序,可降序,利用红黑树实现)

![](https://i-blog.csdnimg.cn/img_convert/83e8c03ced808fe383923854db855a0c.png)

集合的并发修改异常:

遍历删除集合的数据会出现bug,会漏删数据;

增强for循环、 lambda表达式forEach都无法避免,只能使用迭代器Iterator;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class ExcepctionListTest01 {
   
	public static void main(String[] args) {
   
		List<String> ls = new ArrayList<>();
		ls.add("白骨精");
		ls.add("孙悟空");
		ls.add("李玉刚");
		ls.add("李四");
		ls.add("李二牛");
		ls.add("李世民");
		ls.add("小李子");
		ls.add("李元霸");
		ls.add("唐三藏");
		ls.add("白骨精");

		System.out.println(ls);

		for (String l : ls) {
   
			System.out.println(l);
		}
		System.out.println("---------------");

		//      需求:找出集合中全部带李的名字,并从集合中删除;

		for (String l : ls) {
   
			if(l.contains("李")){
   
				continue;
			}
			System.out.println(l);
		}

		//      遍历集合的数据会出现bug,会漏删数据;
		//        System.out.println("---------------");
		//        Iterator<String> it= ls.iterator();
		//
		//        while (it.hasNext()){
   
		//            String name =it.next();
		//            if(name.contains("李")){
   
		//                ls.remove(name);
		//            }
		//            System.out.println(ls);
		//        }


		//        System.out.println("============");
		//        for (int i = 0; i < ls.size(); i++) {
   
		//            String name = ls.get(i);
		//            if(name.contains("李")){
   
		//                ls.remove(name);
		                System.out.println(ls);
		//                i--;
		//            }
		//        }
		//        for (String l : ls) {
   
		//            System.out.println(l);
		//        }


		System.out.println("==========");
		Iterator<String> it = ls.iterator();

		while (it.hasNext()){
   
			String name = it.next();
			if(name.contains("李")){
   
				it.remove();
			}
		}
		for (String l : ls) {
   
			System.out.println(l);
		}

	}
}


可变参数:test(int...nums)

![](https://i-blog.csdnimg.cn/img_convert/ec89560b92f406dff48948dc46af98ab.png)

Collections

![](https://i-blog.csdnimg.cn/img_convert/fcbb8b21255a81559badddaadf5c0295.png)

双列集合Map(key:value)键值对(key不能重复)

![](https://i-blog.csdnimg.cn/img_convert/295c7c481d4967ad0b348371b5c4be15.png)

Map集合的遍历方式

![](https://i-blog.csdnimg.cn/img_convert/3619cc47397c94315b74ffaa2e76e922.png)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapTest03  {
   
    public static void main(String[] args) {
   
        Map<String,Integer> map = new HashMap<>();

        map.put("one",1);
        map.put("two",2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值