【Java】集合List的toArray()方法及其重载

这篇具有很好参考价值的文章主要介绍了【Java】集合List的toArray()方法及其重载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在Java中,集合(List 接口的实现类)提供了一个名为 toArray 的方法,用于将集合中的元素转换成数组。该方法有两个主要的重载形式,分别用于不同的情况。

一、集合对象的非静态方法toArray()

1、toArray()重载方法1

<T> T[] toArray(T[] a)

这个方法将集合中的元素复制到一个指定类型的数组中,并返回该数组。如果指定的数组大小足够容纳集合中的所有元素,那么会将元素直接复制到指定数组中。如果指定的数组大小不足以容纳所有元素,会创建一个新的数组,并将元素复制到新数组中。

示例:

List<String> stringList = new ArrayList<>();
stringList.add("apple");
stringList.add("banana");
stringList.add("orange");

String[] stringArray = stringList.toArray(new String[0]);

2、toArray()重载方法2

Object[] toArray()

这个重载方法不接受参数,它将集合中的元素复制到一个新创建的 Object 类型数组中,并返回该数组。

List<Integer> intList = new ArrayList<>();
intList.add(1);
intList.add(2);
intList.add(3);

Object[] intArray = intList.toArray();

需要注意的是,toArray 方法返回的是一个对象数组,而不是原始的基本数据类型数组。如果需要将集合中的基本数据类型元素转换成数组,可以使用 Java 8 中引入的 stream() 方法和 toArray() 方法的结合。

二、使用stream()流

示例:

List<Integer> intList = new ArrayList<>();
intList.add(1);
intList.add(2);
intList.add(3);

int[] primitiveIntArray = intList.stream()
                                .mapToInt(Integer::intValue)
                                .toArray();

stream()流与 toArray结合的方式

好处,使用stream()转换为数组过程中可以过滤数据

1、返回Object数组

toArray()默认返回Object数组

  ArrayList<Integer> list2 = new ArrayList<>();
  Collections.addAll(list2, 1, 2, 3, 4);
  // 3、收集数据放进数组
  System.out.println("3、收集数据放进数组===============");
  Object[] arr1 = list2.stream().toArray();
  

2、指定数组类型

toArray()中可以接收一个接口作为参数
接口中可以创建指定类型和大小的数组

下面是匿名内部类和lambda表达式两种方式的实现

接口中非抽象方法apply的形参value为流中数据的个数

  // 4、指定放进数组数据类型
  System.out.println("4、指定放进数组数据类型===============");
  // Infunction的泛型:具体类型的数组
  // apply中形参:流中数据的个数,要跟数组长度一致
  // apply的返回值:具体类型的数组
  Integer[] arr2 = list2.stream().toArray(new IntFunction<Integer[]>() {
      @Override
      public Integer[] apply(int value) {
          //System.out.println("value"+value);
          return new Integer[value];
      }
  });
  // toArray方法中的参数:只是创建一个指定类型的数组
  // toArray底层: 会此意得到流中的每一个数据,并把数据放到数组中
  // toArray的返回值:是一个装着流里面所有数据的数组
 
  // lambda表达式写法,表达式中value表示数组长度也就是流中数据的个数
  Integer[] arr3 = list2.stream().toArray(value -> new Integer[value]);

总之,toArray 方法是将集合中元素转换成数组的一种便捷方式,有助于在集合和数组之间进行数据转换。文章来源地址https://www.toymoban.com/news/detail-679590.html

到了这里,关于【Java】集合List的toArray()方法及其重载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Java基础_集合类_List

    Java基础_集合类_List

    类图: (1)AbstractCollection Collection接口的骨架式实现类,最小化实现Collection接口的代价。 (2)AbstractList List接口的骨架式实现类,最小化实现List接口的代价。**“随机访问”**数据存储。 提供了iterator()、listIterator()方法的实现。 重要属性 : protected transient int modCount;【 修改

    2024年04月28日
    浏览(11)
  • Java 中 List 集合排序方法

    注:Collections的sort方法其实是调用了List接口自己的sort方法。 首先你需要list.parallelStream().sorted 进行流处理,使用parallelStream可以充分调度多核CPU。 使用Comparator.comparing进行排序,reversed()进行倒序排列,thenComparing进行下一个排序。 Comparator.comparing()里面的内容,也是就是Obje

    2024年02月12日
    浏览(9)
  • java基础 -02java集合之 List,AbstractList,ArrayList介绍

    java基础 -02java集合之 List,AbstractList,ArrayList介绍

    在正式List之前,我们先了解我们补充上篇Collection接口的拓展实现,也就是说当我我们需要实现一个不可修改的Collection的时候,我们只需要拓展某个类,也就是AbstractCollection这个类,他是Collection接口的骨干实现,并以最大限度的实现了减少此接口所需要的工作; 如上两图进行

    2024年01月20日
    浏览(11)
  • 【Java】List集合遍历的五种方法

    【Java】List集合遍历的五种方法

    🎊专栏【Java】 🌺每日一句:人生最重要的就是要清醒的认知 ⭐欢迎并且感谢大家指出我的问题 目录 1.通过for循环配合List接口中的size()和get(index i)的方法 2.使用Iterator迭代器及其方法遍历集合 🍔迭代器 🍔具体操作 3.增强for循环遍历 🍔是for循环的一种 🍔格式 🍔好处 🍔弊

    2024年02月03日
    浏览(12)
  • java集合之List接口实现类常用方法详解

    目录 一、List集合概述 二、ArrayList类 三、ArrayList常用方法实例 四、LinkedList类 五、Linkedist常用方法实例         java.util.List接口继承自Collection接口,是单列集合的一个分支,通常将实现了List接口的对象称为List集合,在List集合中允许出现重复的元素,所有的元素是以一种线

    2024年02月08日
    浏览(10)
  • java面试基础 -- 方法重载 & 方法重写

    java面试基础 -- 方法重载 & 方法重写

    目录 重载 重写           方法的重载是指在同一个类中定义多个方法, 他们具有相同的名称, 但是具有不同的参数列表, 例如:         此处我们看到三个不同参数的, 但是具有相同返回值和方法名的方法. 有如下测试案例: 运行结果为:  我们将其中一个myMethod方法的返回值改

    2024年02月12日
    浏览(16)
  • Java基础六 - Collection集合List、Set、Queue,Map

    1. List - ArrayList、LinkedList、Vector ArrayList         2. LinkedList         3. Vector         4. 常见使用方法 2. Set - HashSet、LinkedHashSet、TreeSet 1. HashSet 2. LinkedHashSet 3. TreeSet 4. 常用方法 3. Map - HashMap、TreeMap、LinkedHashMap、Hashtable 1. HashMap 2. LinkedHashMap 3. TreeMap 4. Hashtable 5.

    2024年02月14日
    浏览(16)
  • 【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    本篇主要说明在Java8及以上版本中,使用stream().filter()来过滤List对象,查找符合条件的集合。 集合对象以学生类(Student)为例,有学生的基本信息,包括:姓名,性别,年龄,身高,生日几项。 我的学生类代码如下: 下面来添加一些测试用的数据,代码如下: 添加过滤条件

    2024年02月12日
    浏览(39)
  • 【Java 基础】类和对象 & 方法重载详解

    【Java 基础】类和对象 & 方法重载详解

    《 Java 零基础入门到精通 》 专栏持续更新中。通过本专栏你将学习到 Java 从 入门 到 进阶 再到 实战 的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 订阅专栏后添加我微信或者进交流群,进群可找我领取 前端/Java

    2023年04月11日
    浏览(8)
  • list的toArray()方法

    toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。 toArray()方法有两种形式,无参方法和带泛型的方法,接下来给出例子。 list参考链接

    2024年02月12日
    浏览(6)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包