如何将数组转换为Java中的列表?
我使用Arrays.asList()但行为(和签名)以某种方式从Java SE 1.4.2(现在存档中的文档)更改为8,我在网上找到的大多数片段使用1.4.2行为.
例如:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
Run Code Online (Sandbox Code Playgroud)
在许多情况下,它应该很容易被发现,但有时它可能会被忽视:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个HashMap,它将整数作为键,对象作为值.
我的语法是:
HashMap<int, myObject> myMap = new HashMap<int, myObject>();
Run Code Online (Sandbox Code Playgroud)
但是,返回的错误是 - 令牌"int"上的语法错误,此令牌后预期的维度 - 我不明白为什么我应该添加维度(即:将int转换为数组)因为我只需要存储一个数字作为关键.
我能做什么?
提前致谢!:)
有没有在Java中的实用工具方法它转换Boolean成boolean和自动处理空引用Boolean假?
我不明白为什么这段代码没有编译:
Object[] arr = new int[3];
Run Code Online (Sandbox Code Playgroud)
我不需要这段代码.我只想了解自动装箱在这种情况下不起作用的原因?
import java.util.Stack;
public class StackIntro {
public static void main(String[] args){
Stack clapper = new Stack();
for( int i=0; i<11; i++){
clapper.push(i);
}
while(!clapper.isEmpty()){
System.out.print ( clapper.pop() ); //FILO
System.out.print ( ',' );
if(clapper.size()==1){
System.out.print(clapper.pop()); //FILO
System.out.println("...");
}
}
System.out.println("Lift-off.");
clapper.removeAllElements();
}
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我只是想看看数字是如何进出堆栈的.FILO评论显示了这一点.我被告知我应该改变第8行:
clapper.push(i); //previous
clapper.push(new Integer(i)); //new
Run Code Online (Sandbox Code Playgroud)
我不明白这会实现什么,或者两者之间的区别.
我对泛型类型感到困惑。我希望它2.asInstanceOf[A]被转换为 type A,同时,它被转换为Int. 除此之外,输入是java.lang.Long而输出是一个列表Int(根据定义,输入和输出应该是相同的类型)。这是为什么?
def whatever[A](x: A): List[A] = {
val two = 2.asInstanceOf[A]
val l = List(1.asInstanceOf[A],2.asInstanceOf[A])
println(f"Input type inside the function for 15L: ${x.getClass}")
println(f"The class of two: ${two.getClass}, the value of two: $two")
println(f"The class of the first element of l: ${l.head.getClass}, first element value: ${l.head}")
l
}
println(f"Returned from whatever function: ${whatever(15L)}")
Run Code Online (Sandbox Code Playgroud)
输出:
Input type inside the function for 15L: class java.lang.Long
The class of two: class …Run Code Online (Sandbox Code Playgroud) 我编辑了这个问题,从区分它这一个,并消除可怕的"为什么呢?"
如果我有一个返回java对象的java方法,Integerjava编译器允许我将它分配给一个原语int.这似乎要求运行时的麻烦.即.如果整数为空怎么办?
public class SomeClass {
private Integer someIntegerObject;
public Integer getSomeIntegerObject() {
return this.someIntegerObject;
}
}
SomeClass someClass = new SomeClass();
//much later...
int someIntegerPrimative = someClass.someIntegerObject();
Run Code Online (Sandbox Code Playgroud)
如果将someIntegerObject其设置为null,这将在运行时爆炸,但它似乎可以在编译时轻松捕获.
此功能称为"拆箱",而其相反的是"自动装箱".它旨在节省开发人员的时间和可读性,从而手动拆箱.
问题是:在编译时捕获潜在问题的最佳策略是什么?
我大约 2 周前才开始编程,所以请不要太严格:)
我试图解决一个编程练习来打印数组的 3 个最大元素,但是 .sort 方法
报告错误,我不知道为什么。似乎我以错误的方式声明了我的数组,但我无法发现错误。
public static void main(String[] args) {
int [] elements = {1, 4, 17, 7, 25, 3, 100};
int k = 3;
System.out.println("Original Array: ");
System.out.println(Arrays.toString(elements));
System.out.println(k +" largest elements of the said array are:");
Arrays.sort(elements, Collections.reverseOrder());
for (int i = 0; i < k; i++)
System.out.print(elements[i] + " ");
}
Run Code Online (Sandbox Code Playgroud)
}
Object[]可以存储来自任何类的任何对象,因为Java中的每个类都会扩展java.lang.Object.
我不认为原语会延伸Object,为什么我们可以将它们存储起来如下?
Object[] obj_arr = {1, 2, 1.2, 'a', false, new MyClass(), null};
Run Code Online (Sandbox Code Playgroud)
问题是为什么原语可以存储在Object数组中并且在上面的代码中是否发生了自动装箱?