JAVA从零开始Day9

集合:
Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。Collection包含了List和Set两大分支。
(1)List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。List的实现类有LinkedList, ArrayList, Vector, Stack。

(2)Set是一个不允许有重复元素的集合。Set的实现类有HastSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。

2、Map是一个映射接口,即key-value键值对。Map中的每一个元素包含“一个key”和“key对应的value”。AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap。Hashtable虽然继承于Dictionary,但它实现了Map接口。

### 数组名的具体含义及其在编程中的作用 #### 定义与本质 数组名实际上表示的是存储连续数据块的第一个元素所在的地址。换句话说,它是不可更改的指针常量,指向该数组首元素的位置[^1]。这意味着一旦定义了一个数组,比如 `int arr[5];` ,那么在整个程序执行期间,“arr”的值始终不变,因为它固定地指向这块特定内存区域的起点。 #### 数据访问方式 通过数组名加上索引来获取指定位置的数据项是一种非常高效的方式。例如,在表达式 `*(arr+i)` 中,我们实际上是先找到数组开头处(`arr`)再加上偏移量i乘以每个单元占用的空间大小之后的结果就是第 i+1 个元素的实际物理地址;最后解引用此地址即可获得对应的数值[^2]。 #### 存储布局特点 考虑一个多维数组如 `int b[2][3];`, 可将其视为具有两行三列结构的一个表格形式存在计算机内存当中。然而值得注意的是,尽管看起来像是两个独立的一维子集组合而成的整体,但从底层实现角度来看,所有的这些条目都被紧密排列在一起形成单一维度的大序列。因此当我们说b代表整个二维表时,并不意味着它直接保存了所有行列关系的信息,而是仅仅记录下了初始部分的位置而已。至于其他细节,则依赖编译器按照既定规则自动处理完成定位过程[^3]。 #### 编程实践价值 除了基本功能外,灵活运用数组还能极大提升代码可读性和运行效率。拿经典的冒泡排序为例,借助简单的双重循环配合条件判断语句就能轻松达成目标。而且由于现代处理器缓存机制的存在,顺序遍历临近内存区块往往能带来额外性能增益效果[^4]。 ```c // A simple implementation of Bubble Sort using arrays in C language. void bubbleSort(int arr[], int n) { bool swapped; for (size_t i = 0; i < n - 1; ++i) { swapped = false; for (size_t j = 0; j < n - i - 1; ++j) { if (arr[j] > arr[j + 1]) { // Swap adjacent elements that are out of order int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; swapped = true; } } /* If no two elements were swapped by inner loop, then break */ if (!swapped) break; } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值