导航:首页 > 编程语言 > javaarraysaslist

javaarraysaslist

发布时间:2022-05-17 04:58:01

① 关于java集合的一个问题,怎么把一个数组添加到List集合

在第10行定义list的时候类型定义为数组类型就行。

ArrayList<int[]> list=new ArrayList<>();

如果list是按bean对象存,则对象要改变:之前List对象存2个属性:DepartID,num,添加后的对象有3个属性:DepartID,num,dpsNum,所以要定义新的List对象来存两个List的结果。(见下面代码,已调通,1个main类,3个对象类)。

如果list是按string存而非bean对象,则for循环遍历list1后,将list2字符串拼接到list1末尾,再覆盖进list1对应结果中就行,list1.set(index,list1.get(index)+list2.get(index)),类似这句,没调试过。

(1)javaarraysaslist扩展阅读:

Java中的集合类可以分为两大类:一类是实现Collection接口;另一类是实现Map接口。

Collection是一个基本的集合接口,Collection中可以容纳一组集合元素(Element)。

Java提供了对象的数种保存方式,除了内置的数组以外,其余的称为集合类。为了使程序方便地存储和操纵数目不固定的一组数据,JDK中提供了Java集合类,所有Java集合类都位于Java.util包中,与Java数组不同,Java集合不能存放基本数据类型数据,而只能存放对象的引用。

② Arrays.asList()是什么意思,有什么用

Arrays.asList()
将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

③ aslist方法

import java.util.Arrays;
import java.util.List;

/**
*
* 本类演示了Arrays类中的asList方法
* 通过四个段落来演示,体现出了该方法的相关特性.
*
* (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用
* (2) 当使用asList()方法时,数组就和列表链接在一起了.
* 当更新其中之一时,另一个将自动获得更新。
* 注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性
* (3) asList得到的数组是的没有add和remove方法的
*
* 阅读相关:通过查看Arrays类的源码可以知道,asList返回的List是Array中的实现的
* 内部类,而该类并没有定义add和remove方法.另外,为什么修改其中一个,另一个也自动
* 获得更新了,因为asList获得List实际引用的就是数组
*/
public class AsListTest {

public static void main(String[] args) {

/* 段落一:基本数据类型使用asList中的问题 */

/* 说明:虽然在JDK1.6中能够将基本数据类型的数组转换成List,但还是有个缺陷 */
int[] a_int = { 1, 2, 3, 4 };
/* 预期输出应该是1,2,3,4,但实际上输出的仅仅是一个引用, 这里它把a_int当成了一个元素 */
List a_int_List = Arrays.asList(a_int);
foreach(a_int_List);
/* 为此我们需要这样遍历其中元素 */
foreachForBase(a_int_List);

/* 段落二:对象类型的数组使用asList,是我们预期的 */
Integer[] a_Integer = new Integer[] { 1, 2, 3, 4 };
List a_Integer_List = Arrays.asList(a_Integer);通过源码,我们可以看出来asList方法接收一个泛型化的可变参数列表,当传入一个基本数据类型的数组的时候,它会把这个基本数据类型的数组当做一个参数传入,然后返回一个新的ArrayList,其中a就是这个基本类型的数组,所以可变参数列表只接收了一个参数就是数组。当传入一个包装类型对象数组的时候,其中数组中的每一个元素都是一个对象,所以可变参数列表会传入五个对象类型Integer,还有一点是因为基础数据类型是不能被泛型化的,所以才会导致上面代码运行的结果。

注意点:在使用集合等的时候,如果需要使用到泛型,需要保证的是不要使用基础数据类型为泛型参数,这样是一种错误的做法。

④ java数组添加元素的方法

向数组里添加一个元素怎么添加,这儿总结有三种方法:
1、一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。
但有个可以改变大小的数组为ArrayList,即可以定义一个ArrayList数组,然后用add(element)方法往里添加元素即可,还可add(index,element)往指定下标处添加元素;例子如下:
List
list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(2,4);
System.out.println(list);
1
2
3
4
5
6
1
2
3
4
5
6
打印结果: [1, 2, 4, 3]
2、思路为先把array转化为list,用list的add()方法添加元素,再把list转化为array。
但这儿会有一个陷阱盲区,在把array转化为list的过程中,使用的asList()方法会返回一个final的,固定长度的ArrayList类,并不是java.util.ArrayList,直接这样利用它进行add()或remove()是无效的。
List
list=new ArrayList();
list=Arrays.asList(sz);
list.add(5);
1
2
3
1
2
3
那应该怎么做呢,在定义list的时候就直接对array进行转化,代码如下:
(注意这儿Array类型是包装类,若是一般数据类型记得转化,转化参考我其他博客文章。)
//如 List
list=new ArrayList();
// list=Arrays.asList(str);
//这样不行,须如下:
Integer []sz={3,2};
List
list=new ArrayList(Arrays.asList(sz));//**须定义时就进行转化**
list.add(1,5);
Integer[] nsz=new Integer[list.size()];
list.toArray(nsz);
System.out.println(Arrays.toString(nsz));
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
结果输出为:[3, 5, 2]
3、第三个方法思路为创建一个新数组,新数组的大小为旧数组大小+1,把旧数组里的元素一份进新数组,并把要添加的元素添加进新数组即可。

⑤ 请教关于java中的Arrays.asList的用法

import java.util.*;

class Snow {}
class Powder extends Snow {}
class Crusty extends Snow {}
class Slush extends Snow {}

class Light extends Powder {}
class Heavy extends Powder {}

public class ArrayListClass {
public static void main(String[] args) {
List<Snow> snow1 = Arrays.asList(
new Crusty(), new Slush(), new Powder(),new Light(),new Heavy() );
//进行的对比
List<Snow> snow3 = new ArrayList<Snow>();
Collections.addAll(snow3, new Light(), new Heavy());
}
}

⑥ 【JAVA】求教!Arrays.asList()方法在这个程序中是怎么运行的

无语,LS的居然复制我的回答。

我刚才试了1下, 这样是可以的。
List<Powder> snow2=Arrays.asList(new Light(),new Heavy() );

我发现当有两个条件的时候,可以实现List<x1> x=Arrays.asList(new x2(),new x3());

首先,x1必须是x2,x3的直属父类(也就是说x2,x3都是继承自x1),第2,必须至少有2个继承类的申明才能通过编译

也就是说
class Light extends Powder{}//必须得至少有2个类继承。
class Heavy extends Powder{}

List<Powder> snow2=Arrays.asList(new Light(),new Heavy() );
经过尝试,这一句,如果变成
List<Powder> snow2=Arrays.asList(new Light());就无法通过编译。
就算Powder这个类只有1个继承类Light,也是一样无法通过编译。
也就是说这种情况无法通过编译:

class Light extends Powder{}
//class Heavy extends Powder{} 将这一个类注释掉,也就是说现在Powder只有1个继承类Light了。那么:
List<Powder> snow2=Arrays.asList(new Light());这1句无法通过编译。

也就是说:要满足2个条件才能让
List<x1> x=Arrays.asList(new x2(),new x3());通过编译。
第1个已经说了。 第2个就是x1至少有2个继承类,比如x2,x3并且在使用asList的时候,都要将x2,x3丢到asList()里面:
Arrays.asList(new x2(),new x3()),

才能通过声明。

但是有1个问题,如果有100个类继承名为X1的基类,那是不是要把100个子类的都丢到asList里呢,比如这样:Arrays.asList(new x1(),new x2()……new x100()) 呢?

我的试验结果是:不需要。 List<x1> x =Array.asList(),这1句的asList里面,最少只用丢2个x1的继承类的对象就可以通过编译了。
List<x1> x=Arrays.asList(new x2(),new x3())

但是具体为什么会这样,我也没想明白哈

⑦ java arrays.aslist干什么用的

把数组转换成集合

⑧ 关与java中Arrays.asList(T...t),用Collection接收一个asList返回的ArrayList出现问题……

集合类并没有提供修改大小的方法,它的大小随着元素个数的增加而增大,随着元素个数的减少而变小。以前是没有泛型这种东西的,集合中加入任何内容都会转变成Object类型,取出来的时候又要强制转换成所需要的类型,相当的麻烦,而且向下转型的时候容易出错。泛型的出现大大提高了编程的效率,而且检查错误更加容易,jdk5.0之后如果不加泛型会警告,但是不会出错,因为泛型只是编译的概念,并不是语的法强制要求

⑨ Array.asList()函数的使用问题【JAVA】

无语

为什么在我的机器上编译。 连第一个引用都通不过呢?
C:\shiyan123.java:19: 不兼容的类型

找到: java.util.List<Power>
需要: java.util.List<Snow>

似乎根本就无法这样引用。

我试了第2次,似乎可以这样:
List sonw1=Arrays.asList(new Power());
sonw1.add(Arrays.asList(new light()));
也就是说,1开始声明1个list的时候,压根就不声明类型。```直接 List xxx=xxx;

而这样做是可以的,但是却会产生 一个异常···UnsupportedOperationException。
无语。

根据刚才的经验,本人再次试验,原因肯定就处在Arrays.asList上。
我刚才试了一下,可以这样: List<Snow> sonw1=new ArrayList<Snow>();
sonw1.add(new Power());
sonw1.add(new light());
也就是说,本身容器类是支持向上转型的。
而List<snow> snow1=Arrays.asList();问题应该就出在这1句上面。
API上面这样写asList的:返回一个受指定数组支持的固定大小的列表。
将一个指定数组的固定大小的list列表,也就是先前编译时候下面给的提示:
找到: java.util.List<Power>
需要: java.util.List<Snow>
也就是说,先前可能是:将一个List<Power>类的容器对象,赋给了一个List<Sonw>的引用(也就是大概相当于这样):List<Snow> xx=new ArrayList<Power>();因为这中间无法发生向上转型。所以匹配错误。
而当首先创建一个List<Snow> sonw1=new ArrayList<Snow>(); 这样,就创建了一个List<Snow>类的容器对象,并且赋给了一个List<Snow>类的引用。
那么,再添加Snow类的子类。sonw1.add(new light()); 似乎就是顺理成章的事情了。

事实上,我后来试验,List<Snow> sonw1=new ArrayList<Power>(); 这样根本就无法通过编译。 你刚才的 List<Snow> snow1=Arrays.asList(new Power),基本上应该等于这句了List<Snow> sonw1=new ArrayList<Power>();
当创建1对对象的容器时:List<xxx> snow1=new ArrayList<xxx>,两边的中括号里面的XXX应该是同一个类。 要不然,类型就不匹配。

⑩ 为什么Java里的Arrays.asList不能用add和remove方法

因为Arrays.asList方法中是新生成了一个没有实现add和remove方法的ArrayList。

阅读全文

与javaarraysaslist相关的资料

热点内容
python重启路由器脚本 浏览:819
java聊天窗口 浏览:976
单片机控制阵列led灯 浏览:577
白鹿用的什么APP修图 浏览:499
阿里云轻量应用服务器ssh无法连接 浏览:794
员工福利系统源码 浏览:982
数据加密如何设置 浏览:570
php取余运算 浏览:153
php如何压缩图片大小 浏览:137
编程三阶教程 浏览:983
pdf颜色查看 浏览:469
怎么用指令停用命令方块java 浏览:406
鼠标命令行 浏览:567
如何朗读pdf 浏览:746
压缩机启动后继电器发烫 浏览:405
小学编程项目学习 浏览:557
net编译运行原理 浏览:786
加密电脑的文件拷出来打不开 浏览:366
可达性算法根 浏览:208
ibm的服务器怎么安装系统 浏览:492