如何在JAVA中将一个数组转换为一个集合?

如何在JAVA中将一个数组转换为一个集合?,第1张

javautilArrays
Student[] stus = new Student[10];
ArrayList list = new ArrayList();
list = listArraysasList(stus);
这样就可以把数组stus转换为List了

参考Java API 原话:
public static <T> List<T> asList(T a)
返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)
方法同 CollectiontoArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。
例子:
public static void main(String[] args) {
// 数组转换为List,其中参数为任意类型
List<String> list = ArraysasList(new String[]{"ss","sss"});
// List转换为数组,参数指定数组的类型
String[] a = listtoArray(new String[0]);
// 打印
Systemoutprintln(list);
for(String b : a){
Systemoutprint(b+" ");
}

}

如果使用纯SQL 实现,可以先用SQL 语句把 数组的行转成列,然后再用exists进行对比。
select
from a
where exists (
select
from 数组
行转列
where
)

import javautilArrays;
import javautilList;
/

本类演示了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中的问题 /
/ 说明:虽然在JDK16中能够将基本数据类型的数组转换成List,但还是有个缺陷 /
int[] a_int = { 1, 2, 3, 4 };
/ 预期输出应该是1,2,3,4,但实际上输出的仅仅是一个引用, 这里它把a_int当成了一个元素 /
List a_int_List = ArraysasList(a_int);
foreach(a_int_List);
/ 为此我们需要这样遍历其中元素 /
foreachForBase(a_int_List);
/ 段落二:对象类型的数组使用asList,是我们预期的 /
Integer[] a_Integer = new Integer[] { 1, 2, 3, 4 };
List a_Integer_List = ArraysasList(a_Integer);通过源码,我们可以看出来asList方法接收一个泛型化的可变参数列表,当传入一个基本数据类型的数组的时候,它会把这个基本数据类型的数组当做一个参数传入,然后返回一个新的ArrayList,其中a就是这个基本类型的数组,所以可变参数列表只接收了一个参数就是数组。当传入一个包装类型对象数组的时候,其中数组中的每一个元素都是一个对象,所以可变参数列表会传入五个对象类型Integer,还有一点是因为基础数据类型是不能被泛型化的,所以才会导致上面代码运行的结果。
注意点:在使用集合等的时候,如果需要使用到泛型,需要保证的是不要使用基础数据类型为泛型参数,这样是一种错误的做法。

jsonarray转换成list代码如下:
public class JsonTest {
/
@param args
/
public static void main(String[] args) {
// 转换方法1
JSONArray array = JSONArrayfromObject("[{'name':'hehe','age':22}]");
List<Person> list = JSONArraytoList(array, Personclass);// 过时方法
Systemoutprintln(listget(0)getName());
// 转换方法2
List<> list2 = JSONArraytoList(array, new Person(), new JsonConfig());//参数1为要转换的JSONArray数据,参数2为要转换的目标数据,即List盛装的数据
Person person = (Person) list2get(0);
Systemoutprintln(persongetAge());
}
}

1,从SystemString[]转到List<SystemString>
SystemString[] str={"str","string","abc"};
List<SystemString> listS=new List<SystemString>(str);

2, 从List<SystemString>转到SystemString[]
List<SystemString> listS=new List<SystemString>();
listSAdd("str");
listSAdd("hello");
SystemString[] str=listSToArray();
以下介绍2中转换方法
方法一:
几乎所有的初学者都是手工进行的变换。就从转换对象数组到ArrayList来说,一种方法可能是先初始化一个ArrayList对象,然后再循环把数组里的每一个对象添加到ArrayList中。
让我们假设我们有一个称做Person的对象。下面是通常的做法:
代码: Person[] personArray = myPersonGetPersons();
ArrayList personList = new ArrayList();
foreach(Person objPerson in personArray)
{
personListAdd(objPerson);
}
并且也可以使用这种方式从一个ArrayLIst创建一个对象数组:
代码: Person[] personArrayFromList = new Person[personListCount];
int arrayCounter = 0;
foreach(Person objPerson in personList)
{
personArrayFromListSetValue(objPerson,arrayCounter++);
}
方法二:
但是我们为什么不使用NET类库内置的方法来实现这个功能呢?
把一个对象数组转换成ArrayList可以使用ArrayListAdapter方法。这个方法把一个IList包裹在一个ArrayLIst里。现在上面的代码就可以写成:
代码: Person[] personArray = myPersonGetPersons();
ArrayList personList = ArrayListAdapter(personArray);
把一个ArrayList转换成对象数组可以使用ArrayListToArray方法。现在上面的代码就可以写成:
代码: Person[] personArrayFromList = (Person[])personListToArray(typeof(Person));
不要忘了在调用ArrayListToArray方法之前进行强制类型转换,否则在编译的时候会出错提示你不能把一个ArrayList转换成Person对象数组。

有两种方法可以实现。 为方便说明,定义两个整型数组a,b,并实现将a中的值赋值到b中。 int a[4] = {1,2,3,4}, b[4]; 1、 通过数组遍历,逐个赋值。 定义循环变量int i; for(i = 0; i < 4; i ++) b[i] = a[i]; 该程序功能为遍历数组a,


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13392640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存