`
leeqq
  • 浏览: 137039 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

toArray方法的使用简记

    博客分类:
  • JAVA
阅读更多

最近在写代码的时候需要用到的List的toArray方法。可是程序报错了

报错代码大致这样的

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    String[] arr = (String[]) list.toArray();
    for(String str : arr){
        System.out.println(str);
    }
}

 

这里在执行toArray方法时报如下异常

 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

起初想,不是加了类型转换了嘛。怎么还……,后来查了一下,将toArray的用法大致整理如下

 

第一种用法:在toArray方法中添加参数 new String[0]

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    String[] arr = list.toArray(new String[0]);
    for(String str : arr){
        System.out.println(str);
    }
}

 打印如下结果

have
no
problem

 

第二种用法:仍然是toArray方法添加参数,区别看代码

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    String[] arr = new String[list.size()];
    list.toArray(arr);
    for(String str : arr){
        System.out.println(str);
    }
}

 

仍然打印正确结果,注意的是,这里数组arr的最小长度为list的大小,否则转化结束后,数组arr中全是空值。当然比list的大小还要大,是可以的

 

第三种方法:不加参数,但是接受toArray方法返回的值变量类型需为Object[]

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    Object[] arr = list.toArray();
    for(Object str : arr){
        System.out.println(str);
    }
}

 

这样也可以打印正确结果

 

后来发现在数组变量前添加类型转化似乎是行不通的,基本数据类型之间这样转化编译时就报错了

 

是否还有其他用法有待后面的学习,先大致记录如上

分享到:
评论

相关推荐

    list.toArray方法

    在实际开发中,`toArray()`方法的使用场景非常广泛,例如在数据交换、数据备份或者算法实现中。了解并熟练掌握这个方法对于提高代码质量和效率至关重要。在深入研究源码时,我们可能会发现JDK的开发者是如何通过巧妙...

    关于List.ToArray()方法的效率测试

    尽管`List&lt;T&gt;` 在内部确实使用了一个数组(`_items`)来存储元素,但`ToArray()` 方法并不像我们可能想象的那样简单地返回该数组的引用。实际上,当调用`ToArray()` 时,它会创建一个新的数组,并将`List&lt;T&gt;` 中的...

    解决Laravel5.5下的toArray问题

    为了尽量保持对原有框架影响最小,作者并没有直接修改`toArray`方法,而是新增了一个方法`getList`来替代`toArray`。在`vendor/laravel/framework/src/Illuminate/Support/Collection.php`文件中的`toArray`方法下,...

    Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    Java ArrayList 类中的 `toArray(T[])` 方法的参数类型使用 `T` 而不是 `E`,这在初看之下似乎违背了泛型的主要目的——提供类型安全。然而,这样的设计实则是为了增加代码的灵活性和实用性。让我们深入探讨一下其中...

    jQuery学习笔记之toArray()

    在jQuery的学习过程中,`toArray()`是一个非常实用的方法,它能够将jQuery对象转换为普通的JavaScript数组,方便我们进行进一步的数组操作。 `jQuery.toArray()`的核心作用在于,当你有一个jQuery对象,它可能包含...

    往Combox中添加项的两种方法

    一、方法一:使用`Items.Add()`方法 这是最直接、最常用的方法,通过调用`ComboBox.Items.Add()`方法逐个添加项。例如: ```csharp foreach (string item in itemList) { comboBox1.Items.Add(item); } ``` 在这...

    java中数组列表ArrayList的使用.doc

    Java 中数组列表 ArrayList 的使用 ArrayList 是 Java 中的一种...此外,ArrayList 还有很多其他的方法和属性,例如 Clear、Contains、IndexOf 等,大家可以查看 MSDN,了解更多关于 ArrayList 的使用方法和技巧。

    C# 集合一系列扩展方法使用示例

    C# 集合一系列扩展方法 Enumerable 使用示例Select、 Where、ToList、ToArray、FirstOrDefault、All、Any等等和应用场景

    从C#中的数组中删除指定元素的几种方法,超简单

    这里可以使用Where方法筛选出不包含目标值的元素,然后使用ToArray将其转换回数组。这种方法代码简洁,但处理大量数据时可能效率较低。 ```csharp int[] numbers = { 1, 3, 4, 5, 4, 2 }; int valueToRemove = 5...

    C# 生成xml文件,编码为utf-8方法

    最后,使用 MemoryStream 对象的 ToArray 方法将 XML 数据转换为 byte 数组,然后使用 Encoding.UTF8.GetString 方法将其转换为 UTF-8 编码的字符串。 在上面的代码中,首先创建了一个 MemoryStream 对象,然后创建...

    javascript文档

    getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份...

    JAVA AbstractCollection类的使用方法.pdf

    - `toArray()`方法返回的数组是安全的,因为集合并不维护对返回数组的引用,允许调用者自由修改返回的数组。 5. **子类扩展**: - 要创建一个不可修改的集合,程序员只需要扩展`AbstractCollection`并提供`...

    List转换成String数组

    **方法一:使用toArray()方法** ```java List&lt;String&gt; list = new ArrayList(); list.add("a1"); list.add("a2"); // 使用toArray()方法,传入一个大小等于list.size()的String数组 String[] toBeStored = list....

    .Net Framework 各种类型转换方法

    3. **使用 `ToArray` 和 `ToList` 方法**:这些方法可以直接将集合转换为数组或列表: ```csharp List&lt;int&gt; list = new List(new int[] { 1, 2 }); int[] array = list.ToArray(); ``` 4. **多维数组到一维数组...

    C# 中使用matlab参数传递

    本文将详细介绍如何在 C# 中有效地使用 MATLAB 进行参数传递,并通过实例展示具体的实现方法。 #### 二、MATLAB 与 C# 集成基础 为了使 C# 和 MATLAB 能够协同工作,我们需要了解 MATLAB 提供的一个名为 MATLAB ...

    EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用(包含完整示例源码)

    在EF中,当使用`ToList()`、`ToArray()`等方法时,如果数据量大,可能会导致内存溢出。而通过`yield`关键字配合`IEnumerable`接口,可以实现延迟执行,仅在遍历时才执行查询,显著提高了性能。 例如,以下是一个...

    微软JavaScript手册

    getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份...

    JScript 语言参考

    getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份...

    使用JNA替代JNI调用DLL,并解决内存溢出问题

    ### 使用JNA替代JNI调用DLL,并解决内存溢出问题 #### 问题背景 在项目的开发过程中,常常遇到需要处理二进制流数据并对其进行解析处理的情况。这种情况下,如果上层应用平台采用的是Java开发,而底层算法或数据...

Global site tag (gtag.js) - Google Analytics