Java代码未直接使用ArrayList却正常运行,原因何在?
问题
我编写的以下Java代码能够正常运行,但我并没有直接使用ArrayList类,想请教各位这是为什么?
import java.util.Arrays; import java.util.Collections; class findMinMax{ public static void main(String[] args){ Integer[] arr2 = {2,1,35,-6,-2,6,9}; int mymin = Collections.min(Arrays.asList(arr2)); int mymax = Collections.max(Arrays.asList(arr2)); System.out.println(mymin); System.out.println(mymax); } }
解答
- 你没直接写
new ArrayList()但代码能正常运行,核心原因是Arrays.asList(arr2)方法已经帮你创建了一个列表对象——它是java.util.Arrays类内部的私有内部类ArrayList,和我们常用的java.util.ArrayList不是同一个类,但同样实现了List接口。 Collections.min()和Collections.max()方法只要求参数是Collection类型(List是Collection的子接口),所以这个内部类列表完全符合方法的参数要求,能直接被这两个方法接收并处理。- 补充一点:这个内部类ArrayList是基于你传入的数组实现的,它的大小是固定的,不支持添加、删除元素的操作,要是尝试执行这类操作会抛出
UnsupportedOperationException。
内容的提问来源于stack exchange,提问作者Shashank
相关产品推荐
相关产品推荐

