java中数组转成list,java中list转化为数组

  java中数组转成list,java中list转化为数组

  有时候我们需要把数组类型转换成集合类型,因为后者是更强大的数据结构,java.util.List有很多普通数组不支持的功能。例如,我们可以通过list的内置方法轻松检查List是否包含特定值。下面是一些如何将数组转换成列表的例子。

  如何解决写爬虫IP受阻的问题?立即使用。

  通过 java.util.Arrays.asList()将 Array 转换成 List

  Arrays类有一个方便的方法asList,可以帮助转换任务。下面是语法:

  公共静态测试列表asList(T.a)注意:参数不一定是数组,但是可以使用变量参数。它可以创建一个lis。

  公共类测试{

  公共静态void main(String[] args) {

  ListString my list=arrays . aslist( Apple );

  }

  }上面的代码会穿一个包含元素‘Apple’的集合。我们也可以这样做:

  公共类测试{

  公共静态void main(String[] args) {

  ListString my list=arrays . aslist( Apple , Orange );

  }

  }这将生成一个包含两个元素“苹果”和“橙色”的集合

  因为这是一个可变参数。我们可以传递一个数组,数组的元素被识别为参数。例如:

  公共类测试{

  公共静态void main(String[] args) {

  String[] myArray={ 苹果,香蕉,橘子 };

  ListString my list=arrays . aslist(myArray);

  for (String str : myList) {

  system . out . println(str);

  }

  }

  }这样就创建了一个字符串集合。已添加数组myArray。myList集合有三个元素,一个是输出:

  苹果

  香蕉

  橙色陷阱

  这种方法存在一些问题。传入的数组必须是对象数组,而不是基本类型数组。例如:

  公共类测试{

  公共静态void main(String[] args) {

  int[] myArray={ 1,2,3 };

  list my list=arrays . aslist(myArray);

  system . out . println(my list . size());

  }

  }代码输出为1。为什么?因为asList方法需要一个对象的可变参数,所以传入的参数是一个基本类型数组,它创建一个数组集合。所以这个集合的唯一元素就是myArray。因此myList.get(0)将返回与myArray相同的对象。

  asList()创建的对象是固定大小的

  as()方法返回的asList对象是固定大小的,不能容纳更多的元素,例如:

  公共类测试{

  公共静态void main(String[] args) {

  String[] myArray={ 苹果,香蕉,橘子 };

  ListString my list=arrays . aslist(myArray);

  my list . add( Guava );

  }

  }输出如下所示:

  线程“main”Java . lang . unsupportedoperationexception中出现异常

  位于Java . util . abstract list . add(abstract list . Java:148)

  位于Java . util . abstract list . add(abstract list . Java:108)

  Test.main (test.java: 8)因为myList的长度是固定的,所以不能添加更多的元素。

  因为这个方法返回的List对象不是java.util包下的ArrayList,而是数组内部的ArrayList类型。类不实现add、revmove、clear方法,因此任何更改集合结构的调用都将失败。

  将基本数组类型转换成List

  如上所述。将基本类型数组传递给asList的方法不起作用。一个不引入第三方库的解决方案是流经Java8。示例如下:

  公共类测试{

  公共静态void main(String[] args) {

  int[] intArray={ 5,10,21 };

  list my list=arrays . stream(int array)。盒装()。collect(collectors . to list());

  }

  }数组的每个元素都由int转换为Integer类型(boxing),数组转换为List类型。

  将数组转换成允许添加元素的List

  正如在上面的trap部分中提到的,Arrays.asList()方法不支持添加或删除元素。如果你不想这样,这里有几个选择:

  公共类测试{

  公共静态void main(String[] args) {

  String[] myArray={ 苹果,香蕉,橘子 };

  ListString my list=new ArrayList string(arrays . as list(myArray));

  my list . add( Guava );

  }

  }这段代码显式创建一个新的ArrayList对象,然后加上Arrays.asList的结果,因为我们创建了一个ArrayList。因此没有添加移除限制。在上述代码执行结束之前有四个元素。不要期望在代码执行时抛出异常。

  自己实现Array组转换成List

  有时候解决问题用我们自己的实现方案更好。下面是一个将java数组转换成列表的简单例子:

  公共类测试{

  公共静态void main(String[] args) {

  String[] myArray={ 苹果,香蕉,橘子 };

  ListString my list=new ArrayList string();

  for (String str : myArray) {

  my list . add(str);

  }

  system . out . println(my list . size());

  }

  }代码的预期输出是3。因为在执行逻辑后,集合中有3个元素。

  我们代码的负面就是代码比较长,我们在重复造轮子。好处是当我们的需求发生变化时,可以适应定制。例如,在下面的代码中,每个元素都被添加到列表中两次。

  公共类测试{

  公共静态void main(String[] args) {

  String[] myArray={ 苹果,香蕉,橘子 };

  ListString my list=new ArrayList string();

  for (String str : myArray) {

  my list . add(str);

  my list . add(str);

  }

  system . out . println(my list . size());

  }

  }输出是6,因为数组中的元素都加了两次。以下是将字符串数组转换为ListInteger的另一个示例:

  公共类测试{

  公共静态void main(String[] args) {

  String[] myArray={ 5 , 6 , 7 };

  list integer my list=new ArrayListInteger();

  for (String str : myArray) {

  my list . add(integer . value of(str));

  }

  }}解析数组中的每个字符串,并将其转换为相应的整数。结果将包含所有转换后的整数。

  推荐:java视频教程以上是Java如何将数组转换成列表。有关(代码示例)的详细信息,请关注我们的其他相关文章了解更多!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: