arry list和linked list,遍历的时候从CPU分析有什么区别
时间: 2023-11-13 15:02:38 浏览: 59
在遍历arry list时,由于其元素在内存中是连续存储的,CPU可以利用局部性原理,将大量数据缓存在高速缓存中,加快遍历速度。而在遍历linked list时,由于元素在内存中不是连续存储的,每次访问一个元素都需要通过指针跳转到下一个元素的内存地址,这个过程需要不断地访问内存,导致缓存命中率较低,从而影响遍历速度。因此,从CPU的角度来看,遍历arry list比遍历linked list更加高效。
相关问题
arry 转化成list
将数组转换为列表可以使用Arrays.asList()方法。例如,如果有一个字符串数组arr,可以使用以下代码将其转换为列表:
List<String> list = Arrays.asList(arr);
但是需要注意的是,使用Arrays.asList()方法转换的列表长度是不可变的,即无法添加或删除元素。如果尝试在转换后的列表中添加或删除元素,会抛出java.lang.UnsupportedOperationException异常。因此,如果需要在列表中进行添加或删除操作,可以使用ArrayList的构造函数来创建一个新的可变列表。例如:
List<String> list = new ArrayList<>(Arrays.asList(arr));
这样就可以将数组arr转换为一个可变的字符串列表。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Array与List的转换](https://blog.csdn.net/m0_60552721/article/details/125554168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
遍历数组Arry中的每一个元素,当有元素等于‘-’时则将其删掉,形成新的数组Arry1
在 C# 中,遍历数组并删除等于 `'-'` 的元素可以使用 `List<T>` 或 `Array` 的线性搜索,下面是两种常见的方法:
**使用 List<T>:**
```csharp
List<char> Arry = new List<char> { 'a', '-', 'b', '-', 'c' }; // 假设 Arry 是字符列表
List<char> Arry1 = new List<char>();
foreach (char element in Arry)
{
if (element != '-')
{
Arry1.Add(element);
}
}
// 将 List 转换回数组
char[] newArry1 = Arry1.ToArray();
```
**使用 Array:**
```csharp
char[] Arry = { 'a', '-', 'b', '-', 'c' };
int length = Array.IndexOf(Arry, '-'
{
Array.Copy(Arry, 0, newArry1, 0, length); // 保存到新数组的开始部分
Array.Copy(Arry, length + 1, newArry1, length, Arry.Length - length - 1); // 从第二个 '-' 后复制剩余元素
}
else
{
newArry1 = Arry; // 如果不存在 '-', 直接赋值
}
```
这两种方法都会创建一个新的数组(`newArry1`),其中不包含 `'-'`。
阅读全文