首页 > 其他分享 >ChatGPT还是有点东西的-public static <T> List<T> Arrays.asList(T... a) {...}

ChatGPT还是有点东西的-public static <T> List<T> Arrays.asList(T... a) {...}

时间:2023-07-07 15:34:59浏览次数:34  
标签:... Arrays 30 List intList Integer asList

背景

业务开发需要判断业务状态是否在30、40、50、60的集合内,所以写了以下代码

int[] inLiq = {30,40,50,60};
return Arrays.asList(inLiq).contains(o.getOrderStatus());

自我Review代码时,验证了下这行代码,发现状态为30时,仍然返回false。
在自我怀疑中调整代码,并验证,代码如下:

Integer[] integerArray = {30, 40, 50,60};
List<Integer> integerList = Arrays.asList(integerArray);
System.out.println(integerList.contains(30)); // true
System.out.println(integerList.contains(Integer.valueOf(30))); // true
System.out.println(integerList.contains(Integer.valueOf(30).intValue())); // true


int[] intArray = {30, 40, 50,60};
List<int[]> intList = Arrays.asList(intArray);
System.out.println(intList.contains(30)); // false
System.out.println(intList.contains(Integer.valueOf(30))); // false
System.out.println(intList.contains(Integer.valueOf(30).intValue())); // false

没想很明白,于是问了下ChatGPT。

ChatGPT的回答

Arrays.asList() 方法返回的结果类型取决于传入的参数类型。让我们来看一下这两个情况。

在第一种情况下,integerArray 是一个包装类型(Integer)的数组。当你将它作为参数传递给 Arrays.asList() 方法时,它会将数组的元素视为独立的对象,并返回一个泛型为 Integer 的 List。也就是说,它会将数组中的每个元素转换为相应的 Integer 对象,并将这些对象放入列表中。

Integer[] integerArray = {30, 40, 50, 60};
List<Integer> integerList = Arrays.asList(integerArray);

在这种情况下,integerList 是一个泛型为 Integer 的列表,可以通过索引访问、迭代等操作。

而在第二种情况下,intArray 是一个基本类型(int)的数组。当你将它作为参数传递给 Arrays.asList() 方法时,由于基本类型不能作为泛型参数,它会将整个数组作为单个元素放入列表中。也就是说,返回的是一个 List<int[]>,其中的元素类型是 int[]。

int[] intArray = {30, 40, 50, 60};
List<int[]> intList = Arrays.asList(intArray);

在这种情况下,intList 是一个泛型为 int[] 的列表,它包含了一个元素,即原始的 int 数组。因此,你无法通过索引访问数组的元素,而只能通过 intList.get(0) 访问整个数组。

总结来说,Arrays.asList() 方法根据传入的参数类型决定返回的结果类型,基本类型数组会被视为单个元素放入列表中,而包装类型数组会将每个元素都作为独立对象放入列表中。

标签:...,Arrays,30,List,intList,Integer,asList
From: https://www.cnblogs.com/Candies/p/17535116.html

相关文章

  • es doc内的list的字段与文档外的字段混合排序 C#
    varscript="null!=params._source.sortTime?params._source.sortTime.toString():(params._source.listinstanceofArrayList&&params._source.list.length>0?params._source.list[0].sortTime:'0')";......
  • 机械转码,本来以为只能去比亚迪,没想到十二月份华为、百度、美团等都给我开了...
    作者:阿秀校招八股文学习网站:https://interviewguide.cn你好,我是阿秀。今天分享一位非科班师弟的两年学习经历,他是在上个月的时候跟我私聊说自己上岸华为了,华为给他开的是15级,然后马上就找比亚迪毁约了。。。迪子VS华子,肯定还是华子更香一些的。。。2022.12.19号的事情了秀......
  • To do list
    2023暑假和联赛前要看的东西:1.搜索\(\text{meetinthemiddle}\)启发式优化剪枝2.DP背包树形、\(\text{DAG}\)状压区间数位动态\(\text{DP}\)3.DP优化斜优高消单调性状态设计4.字符串HashKMP、AC自动机TrieSA、SAMManacher、回文树5.数学矩阵置换......
  • Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的
    Linux操作系统中,.zip、.tar、.tar.gz、.tar.bz2、.tar.xz、.jar、*.7z等格式的压缩与解压zip格式压缩:zip-r[目标文件名].zip[原文件/目录名]解压:unzip[原文件名].zip1.2.注:-r参数代表递归tar格式(该格式仅仅打包,不压缩)打包:tar-cvf[目标文件名].tar[原文件名/目录......
  • java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener类没有找到 解决:file--properties--选择Deployment Assembly --再点击右边的Add按钮--选择JavaBuildPathEntries--点击Next按钮--选择你的MavenDependencies......
  • CPython, Pypy, MicroPython...还在傻傻分不清楚?
    哈喽大家好,我是咸鱼当我们说Python时,通常指的是官方实现的CPython但还有很多比如Pypy、Jython、MicroPython、Brython、RustPython等“python”许多小伙伴看到这些带“python”的概念可能一头雾水,心想这跟我平时接触到的python有什么区别吗?这些到底是什么那么今天这......
  • 软件测试常用工具总结(测试管理、单元测试、接口测试、自动化测试、性能测试、负载测试
    在软件测试的过程中,多多少少都是会接触到一些测试工具,作为辅助测试用的,以提高测试工作的效率,使用好了测试工具,能对测试起到一个很好的作用,同时,有些公司,也会要求掌握一些测试工具,或者,是在面试时,也会被问到测试工具的,比如,在面试时,最常见的问题便是,你在测试时,用的是什么测试工具?或者......
  • scala class、Map、List 转换成Json(Gson、json4s、JSONUtil)
    实例代码importcn.hutool.json.JSONUtilimportcom.google.gson.GsonobjectEntitytoJsonTest{defmain(args:Array[String]):Unit={valgson=newGsonvalpeople=JJ("gl",12,List("basketball","baseball"),......
  • 集合、Collection 接口、List接口
    集合、Collection接口、List接口集合的理解和好处前面,我们保存多个数据可以使用数组,但数组有不足的地方数组数组的长度创建时必须指定,而且一定指定,不能修改保存的必须为同一类型的元素使用数组进行增加/删除的代码比较麻烦Person[]pers=newPerson[1];pers[0]......
  • 不确定传参的个数n=(1,2,...) 返回n*n的和
    #函数不确定的参数情况下输出n*n的和defcalc(numbers):total=0forninnumbers:print(f'n:{n}')total=total+n*nprint(f'total:{total}')returntotal#调用函数result=calc((1,2))print(f'result:{result}')......