Java编译器负责转换原始数据类型及其包装类。但我怀疑的是,尽管java编译器本身执行类型转换,但为什么当我尝试将Array转换为ArrayList时它会输出错误使用int数组作为参数。像:
int[] val = {1,2,3,4,5};
ArrayList<Integer> newval = new ArrayList<Integer>(Arrays.asList(val));
错误:找不到
的合适构造函数ArrayList(List<int[]>)
为什么编译器没有将int转换为Integer?
答案 0 :(得分:2)
您可以使用IntStream
来帮助您进行拳击&#34;原语
int[] a = {1,2,3,4};
List<Integer> list = IntStream.of(a)
.boxed()
.collect(Collectors.toList());
这将迭代数组,将int
加入Integer
,然后您只需将Stream
收集到List
Collectors
<!DOCTYPE HTML>
<head>
<title>Szafranowka - Apartments & Restaurant </title>
<meta name="viewport" content="width=device-width", initial-scale=1">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<link rel="stylesheet" href="style.css" type="text/css" />
<link href="https://fonts.googleapis.com/css?family=Tangerine" rel="stylesheet">
<style>
body {
padding: 0;
margin: 0;
height: 100vh;
width: 100vw;
}
#container
{
width: 100%;
height: 100%;
}
#background
{
width: 100%;
height: 100%;
position: absolute;
opacity: 0.5;
filter: blur(3px);
filter: contrast(50%);
filter: brightness(30%);
}
#background img
{
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
#header
{
position: absolute;
z-index: 1;
font-family: 'Tangerine', cursive;
text-align: center;
color: #9F5F9F;
font-size: 70px;
display: table-cell;
vertical-align: middle;
width: 100%;
text-shadow: 2px 2px #660055;
}
#header h2
{
margin-bottom: -30px;
}
#entrance span
{
border: 1px solid;
padding: 15px;
}
</style>
</head>
<body>
<!-- Główny DIV całej strony -->
<div id="container">
<!-- Lewa część tła strony, zamknięta w divie -->
<div id="background">
<img src="background.jpg"> </img>
</div>
<div id="header">
<h2>Szafranowka</h2> <p>Apartments & Restaurant </p>
<br></br> <h5 id="entrance"><span>Wejscie/Entrance</span></h5>
</div>
</div>
</body>
</html>
答案 1 :(得分:1)
您无法创建ArrayList<primitive types>
来源:why you can't create a Arraylist of primitive types。而是使用适配器类:
class Adapter{
private int[] value;
adapter(int[] value){
this.value = value;
}
public int[] getValue(){
return value;
}
}
然后将其添加到ArrayList<Adapter> AL = new ArrayList<>();
答案 2 :(得分:0)
这里没有自动装箱;也许你打算这样做:
Integer[] val = {1,2,3,4,5};
答案 3 :(得分:0)
int[] val = {1,2,3,4,5};
对于原始数组:
List<int[]> vv = Arrays.asList(val);
将获取数组列表,因为当我们尝试将原始数组转换为列表时,自动装箱不起作用
对象数组类型:
Integer[] val = {1,2,3,4,5};
List<Integer> vv = Arrays.asList(val);
编译器将使用自动装箱
答案 4 :(得分:-2)
Arrays.asList
接受一个对象数组 - 而不是基元(在很多情况下,编译器足够聪明,可以通过称为自动装箱的东西进行交换 - 在这种情况下不是)。使用简单的循环,您可以将数组的项添加到List
。