链表转数组

本文介绍了一种将链表数据结构转换为数组的方法。通过遍历链表并将每个节点的值添加到数组中,最终返回该数组。这种方法适用于需要将链表数据转换为连续存储结构的场景。

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

将一个链表转换为一个数组。

样例

样例 1:

输入: 1->2->3->null
输出: [1,2,3]

样例 2:

输入: 3->5->8->null
输出: [3,5,8]

 

/**
 * Definition of singly-linked-list:
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *        this->val = val;
 *        this->next = NULL;
 *     }
 * }
 */

class Solution {
public:
    /**
     * @param head: the head of linked list.
     * @return: An integer list
     */
    vector<int> ret;
    vector<int> toArrayList(ListNode * head) 
    {
        // write your code here
        if(head  == NULL)
            return ret;
        while(head)
        {
            ret.push_back(head->val);
            head=head->next;
        }
        return ret;
    }
};

 

### 将 `java.util.List` 换为数组的方法 在 Java 中,可以使用多种方法将 `java.util.List` 换为数组。以下是几种常见的实现方式: #### 方法一:使用 `List.toArray()` 方法 Java 的 `List` 接口提供了一个名为 `toArray(T[])` 的泛型方法,可以直接用于将列表中的元素复制到指定类型的数组中。 ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ListToArrayExample { public static void main(String[] args) { List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C")); // 创建目标数组并调用 toArray() 方法 String[] array = list.toArray(new String[0]); System.out.println(Arrays.toString(array)); // 输出: [A, B, C] } } ``` 此方法适用于任何实现了 `List` 接口的类,并能自动处理类型换[^1]。 --- #### 方法二:手动遍历列表并将元素赋值给数组 如果不想依赖内置方法,也可以通过循环手动完成这一过程。 ```java import java.util.ArrayList; import java.util.List; public class ManualConversionExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Integer[] array = new Integer[list.size()]; for (int i = 0; i < list.size(); i++) { array[i] = list.get(i); } System.out.println(java.util.Arrays.toString(array)); // 输出: [1, 2, 3] } } ``` 这种方法虽然更繁琐,但在某些特殊场景下可能更加灵活[^2]。 --- #### 方法三:针对原始数据类型的特殊情况 对于原始数据类型(如 `int`, `double`),由于它们不是对象类型,因此无法直接存储在 `List` 或其他集合中。通常会先将其封装为对应的包装类(如 `Integer`, `Double`),然后再进行换。 以下是一个示例,展示如何从 `List<Integer>` 换为 `int[]` 数组: ```java import java.util.ArrayList; import java.util.List; public class PrimitiveArrayConversionExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(10); list.add(20); list.add(30); int[] array = new int[list.size()]; for (int i = 0; i < list.size(); i++) { array[i] = list.get(i); // 自动拆箱操作 } System.out.println(java.util.Arrays.toString(array)); // 输出: [10, 20, 30] } } ``` 这种情况下需要注意自动装箱/拆箱机制带来的性能开销[^3]。 --- #### 方法四:链接表数组 当源数据结构是链表形式时(例如 `LinkedList`),同样可以通过上述提到的方式之一来完成换。下面给出一个简单的例子说明这一点: ```java import java.util.LinkedList; public class LinkedListToArrayExample { public static void main(String[] args) { var linkedList = new LinkedList<String>(); linkedList.add("X"); linkedList.add("Y"); Object[] objects = linkedList.toArray(); System.out.println(java.util.Arrays.toString(objects)); // 输出: [X, Y] String[] strings = new String[linkedList.size()]; linkedList.toArray(strings); System.out.println(java.util.Arrays.toString(strings)); // 输出: [X, Y] } } ``` 这里展示了两种不同的换策略——一种返回的是 `Object[]` 类型的结果;另一种则允许我们传入特定的目标数组实例作为参数[^4]。 --- ### 总结 以上介绍了四种主要途径用来解决 “如何把 Java 列表化为数组”的问题。每种方案都有其适用范围以及优缺点,在实际开发过程中可以根据具体需求选择最合适的那一个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值