`
leeqq
  • 浏览: 138776 次
  • 性别: 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`并提供`...

    C# 中使用matlab参数传递

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

    excelToArray

    4. **读取数据**:使用`getActiveSheet`的`getCellCollection`方法获取所有单元格,然后遍历它们以构建二维数组。例如: ```php $data = array(); foreach ($objPHPExcel-&gt;getActiveSheet()-&gt;getCellCollection()...

    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. **多维数组到一维数组...

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

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

    【ASP.NET编程知识】Asp.Net使用Npoi导入导出Excel的方法.docx

    "ASP.NET使用Npoi导入导出Excel的方法" 在ASP.NET编程中,导入和导出Excel文件是一种非常常见的功能。Npoi是一个开源的库,能够帮助开发者轻松地实现Excel文件的导入和导出。本文将详细介绍如何使用Npoi在ASP.NET中...

    微软JavaScript手册

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

Global site tag (gtag.js) - Google Analytics