题目,给出一个数组,将这个数组按最大、最小、次大、次小、这样依次打印出来。
public static void printVector(Integer[] lists){//若写成int[] lists则转化成Integer[]的调用编译不通过
if(lists.length==0){
return;
}
int max=lists[0];
int min=lists[0];
for(int i=0;i<lists.length;i++){
if(lists[i]>max)max=lists[i];
if(lists[i]<min)min = lists[i];
}
if(max==min){
System.out.println(max);
}else{
System.out.println(max);
System.out.println(min);
}
List ll = new ArrayList();
for(int i=0;i<lists.length;i++){
if(lists[i]==max||lists[i]==min){
continue;
}
ll.add(lists[i]);
}
printVector((Integer[])ll.toArray(new Integer[0]));//注意new Integer[0]用法
}
ArrayList类扩展AbstractList并执行List接口。ArrayList支持可随需要而增长的动态数组。
ArrayList有如下的构造函数:
ArrayList( )
ArrayList(Collection c)
ArrayList(int capacity)
如果调用new ArrayList()构造时,其默认的capacity(初始容量)为10。
参见ArrayList源码,其中是这样定义的:
public ArrayList() {
this(10);
}
默认初始化内部数组大小为10。为什么是10?不知道。可能SUN觉得这样比较爽吧。
程序编译后执行ArrayList.toArray(),把ArrayList转化为数组时,该数组大小仍为capacity(为10)。
当装入的数据和capacity值不等时(小于capacity),比如只装入了5个数据,数组中后面的(capacity - size)个对象将置为null,此时当数组强制类型转换时,容易出现一些问题,如java.lang.ClassCastException异常等。
解决办法是:在用ArrayList转化为数组装数据后,使用trimToSize()重新设置数组的真实大小。
如果这个数组a足够大,就会把数据全放进去,返回的数组也是指向这个数组,(数组多余的空间存储的是null对象);要是不够大,就申请一个跟参数同样类型的数组,把值放进去,然后返回。
分享到:
相关推荐
然而,需要注意的是,简单的 `(array)` 和 `(object)` 类型转换操作只能处理单层的数据结构。对于嵌套的数组和对象,它们就无法胜任。另外,虽然`json_decode(json_encode($object))` 可以实现对象到数组的转换,但...
如果元素是数组或对象,它会递归地调用`arrayToObject`函数,确保多层嵌套的数据也能正确转换。最后,整个数组会被转换成一个对象。 相反,将对象转换为数组,我们可以使用`objectToArray`函数: ```php function ...
这里我们使用了强制类型转换 `(Integer)` 来将Object转换为Integer,然后调用 `intValue()` 方法获取int值。 3. 使用`Arrays.copyOf()`方法: Java的`java.util.Arrays`类提供了一个便捷的方法`copyOf()`,可以用于...
本节知识点详细解析高通笔试题中的10道笔试题,涵盖嵌入式C开发人员所需的各种知识点,包括volatile关键字、类型转换、递归调用、指针、多维数组、逗号表达式、指针数组、函数指针和自加操作等。 题目1:volatile...
* 掌握C++的自动类型转换和强制类型转换 主要考点包括数据类型的种类、各种数据类型的定义方法、运算符的种类、运算符优先级和结合性、不同类型数据间的转换与运算等。 2. 基本语句 * 了解C语句的概念及种类 * ...
* 使用强制类型转换来转换数据类型 * 使用 `float` 类型来表示浮点数 * 使用 `String` 类型来表示字符串 ### 5. 输入输出操作 * 使用 `System.out.println()` 来输出结果 * 使用 `System.in.read()` 来读取用户...
15. 强制类型转换:强制类型转换运算的优先级高于算术运算,如第25题。 16. 调试:C源程序的调试包括查错和排错,如第28题。 17. 递归调用:函数可以调用自身,这是递归调用,如第29题的B选项。 18. 常量:在...
常见的运行时异常包括数组下标越界、类型转换错误、空指针异常、除以零等。 在递归方法设计中,一个方法直接或间接调用自身来解决问题。递归方法需要一个明确的终止条件,以避免无限递归导致的栈溢出错误。设计递归...
在第二个程序中,我们可以看到强制类型转换的使用。变量b和c都是浮点型变量,而变量a1和a2都是整型变量。程序使用强制类型转换将浮点型变量转换为整型变量。 知识点: * 强制类型转换 * 类型转换的规则 3. 赋值...
* 掌握C++的自动类型转换和强制类型转换 * 主要考点:数据类型的种类、各种数据类型的定义方法、运算符的种类、运算符优先级和结合性、不同类型数据间的转换与运算 ㈡ 基本语句 * 了解C语句的概念及种类 * 掌握...
3. 运算符与表达式:理解运算符的种类、功能、优先级和结合性,掌握不同类型的数据混合运算规则,理解隐式类型转换和强制类型转换。 4. 语句结构:熟练使用定义、表达式、空、复合、选择、循环、转移语句,理解它们...
* 掌握C++的自动类型转换和强制类型转换 主要考点: * 数据类型的种类 * 各种数据类型的定义方法 * 运算符的种类 * 运算符优先级和结合性 * 不同类型数据间的转换与运算 ㈡ 基本语句 * 了解C语句的概念及种类...
25. **类型转换和运算符优先级**:强制类型转换优先级高于算术运算。 26. **表达式**:`a=a+1`是正确的赋值表达式,等价于`a = a + 1;`。 27. **表达式**:`a=b=c=5;`可以一次完成多个赋值。 28. **源程序调试**...
6. 数据类型转换:包括隐式类型转换和显式类型转换(强制类型转换)的操作,例如将浮点型数值赋值给整型变量时可能发生的转换。 7. 数组操作:理解一维和二维数组的声明、初始化以及访问数组元素的方法。包括使用...