集合框架

本文详细介绍了Java集合框架,包括Collection链和Map链中的接口与类。阐述了Collection接口及其子接口List、Set的特性、遍历方式、泛型、装箱拆箱等内容,还对比了ArrayList、LinkedList等的区别。同时介绍了Map集合的特性、遍历方式,以及HashMap与HashTable的差异,还提及相关工具类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合框架

Collection
List
ArrayList
LinkedList
Vector
Set
HashSet
LinkedHashSet
SortedSet
TreeSet
Map
HashMap
LinkedHashMap
HashTable
SortedMap
TreeMap

在Collection链中,Collection,List,Set,SortedSet是接口,其余是类。
在Map链中,Map和SortedMap是接口,其余的是类。

一.集合框架主要包括两大块:

  1. Collection接口:是集合框架的顶级接口,即是List和Set的父接口,但不是Map集合 的父接口(面试常考) ------集合中只能添加应用类型的数据
    List集合:
    1>特性:
    有序性:输出顺序与添加顺序一致
    唯一性:添加的对象可以重复
    2>遍历方式:
    >for循环遍历(利用下标)
    >foreach循环
    >迭代器Iterator(快捷键Ctrl+1快速实现)
    方法:
    hasNext():判断集合中是否有下一个元素
    next():找到并取出集合中的下一个元素
    >删除:
		List list = new ArrayList<>();
		list.add("小一");
		list.add("小二");
		list.add("小三");
		list.add("小三");
		//逆向删除直接删除第一个(还剩0个)
		for (int i=list.size()-1; i>=0; i--) {
			list.remove(0);
		}
		//正向删除思维(还剩2个)
		for (int i = 0; i <list.size(); i++) {
			list.remove(i);
		}
		//逆向删除思维(还剩0个)
		for (int i = list.size()-1; i>=0; i--) {
			list.remove(i);
		}
		//迭代器删除(还剩0个)
		Iterator nn = list.iterator();
			nn.next();
			while(nn.hasNext()) {
		nn.remove();
		}

		3>List的优化:
		默认初始容量为10,负载因子为0.5
		扩容公式:容量当前大小+10*负载因子
		//指定初始容量
		List<Student> list = new ArrayList<Student>(4);
		扩容后的大小:4+10*0.5=9

4>泛型:以类型作为参数的类,默认值是Object
作用:提高代码的健壮性,简化代码(即不用转型)

5>装箱,拆箱:(类似于包裹的包装和拆封)
装箱:值类型–>引用类型

例:
int a = 5;
Ingter n = new Ingter(a);

拆箱:引用类型–>值类型

例:
Ingter n = new Ingter(5);
int a = n.intValue();

6>ArrayList,LinkedList,Vector的区别:
ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢;
LinkedList:以链表的结构存储数据,查询慢、增删改快
Vector:增删改查都慢,已过时

Set集合
1>特性:
无序性:数据的存入顺序和输出顺序不一致
唯一性:重复的数据会被过滤掉
(可用对象的序列化(即实现Serializable接口)和利用hashCode()方法,equals()方法验证)
2>遍历方式:
foreach循环:

```
	Set<String> set = new HashSet<>();
	set.add("zs");
	set.add("ls");
	set.add("ww");
	set.add("ww");
	//foreach遍历
	for (String str : set) {
		System.out.println(str);
	}
	//迭代器遍历
	Iterator<String> it = set.iterator();
	while(it.hasNext()) {
		System.out.println(it.next());
	}
```

3>常用的类:
TreeSet:根据某种规则(自行定义)对集合中的元素进行排序
自然比较接口:java.lang.Comparable
实现类实现该接口并实现排序方法,定义排序规则
比较器:java.util.Comparator(String以AscII码进行比较,返回差值1/-1/0)
新建一个类实现Comparator接口
4>LinkedHashSet:
元素是有序的,是不重复的,底层数据结构是按照链表的结构存储数据的。

Map集合:(它不是Collection的子类)
1>特性:
无序:数据存入的顺序与输出的顺序不一致
键值对:以键值对的形式添加元素,键不能重复,值可以重复
2>遍历方式:
2.1 先取出保存的的所有键的Set,再遍历Set

		//键
		Set<String> key = map.keySet();
		for (String k : key) {
			System.out.println(k);
		}
		//值
		Collection<String> val = map.values();
		for (String v : val) {
			System.out.println(v);
		}

2.2 先取出保存的所有的Entry的Set,在遍历Set

		//键值对
		Set<Entry<String, String>> entryset = map.entrySet();
		for (Entry<String, String> entry : entryset) {
			String k = entry.getKey();
			String v = entry.getValue();
			System.out.println(k+"="+v);
		}

3>HashMap与HashTable的区别:
HashMap: 异步的 非安全的
HashTable: 同步的 安全的(Synchronized)

4>其他:
4.1 Collection:工具类
提供一组静态方法操作Collection集合
4.1 Arrays:工具类
提同一组静态方法操作数组

例:
		//遍历集合
		List<String> asList = new ArrayList<>(Arrays.asList(new String[] 			{"zs","ls","ww"}));
		System.out.println("添加元素前的长度"+asList.size());
		asList.add("hh");
		System.out.println("添加元素后的长度"+asList.size());
内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值