java List<Integer> list = new ArrayList<>(); list.add(2); list.add(3); 简单写法可以用工具类
时间: 2024-03-06 22:49:57 浏览: 53
是的,Java中可以使用Arrays.asList()方法进行简写,如下所示:
```
List<Integer> list = new ArrayList<>(Arrays.asList(2, 3));
```
这样就可以一行代码创建一个包含初始值的Integer类型的ArrayList了。注意,这里需要将Arrays.asList()的返回值转换为ArrayList类型,因为Arrays.asList()返回的是一个不可变的List类型,而我们需要一个可变的ArrayList类型。
相关问题
List<list<Integer>> l1=new ArrayList<>();为什么不对
在 Java 中,`List<List<Integer>> l1 = new ArrayList<>();` 这行代码实际上是一个语法错误,原因在于列表嵌套的初始化不正确。这里有两个问题:
1. **类型不匹配**:`List<List<Integer>>` 表示一个列表,其元素是另一个列表,每个内部列表包含 Integer 类型的对象。但是,你试图直接创建一个 `ArrayList` 对象,它只接受单一类型的元素,而不是另一个列表作为元素。
2. **缺少泛型指定**:当你创建一个 ArrayList 的实例时,需要明确指定列表内元素的具体类型。正确的写法应该是指定内部列表的元素类型:
```java
List<List<Integer>> l1 = new ArrayList<ArrayList<Integer>>();
```
或者省略具体的实现类,如果使用泛型自动推断:
```java
List<List<Integer>> l1 = new ArrayList<>();
l1.add(new ArrayList<Integer>()); // 添加时指定元素类型
```
在这个例子中,第一个初始化是不合适的,因为它期望的是一个能够容纳 Integer 列表的容器,而你提供的只是一个普通的 ArrayList,无法直接存储其他列表。
检查写法是否正确 List<Integer> list = new ArrayList<>(); List<MemberLevel> memberLevels = memberLevelListResp.getMemberLevelList().stream().filter(memberLevel -> memberLevel.getLevel().equals("1")).collect(Collectors.toList()); for (MemberLevel memberLevel : memberLevels) { List<BenefitPackage> packageList = memberLevel.getPackageList(); for (BenefitPackage benefitPackage : packageList) { for (MemberBenefit memberBenefit : benefitPackage.getBenefitList()) { if (memberBenefit.getBenefitNo().equals("RHR041")) { System.out.println("-----" + memberBenefit.getBenefitNo()+"--" + memberBenefit.getBenefitVal()); list.add(Integer.valueOf(memberBenefit.getBenefitVal())); } } } }
你的写法看起来是正确的,对于每个MemberLevel对象,通过getPackageList()方法获取到其对应的所有BenefitPackage对象,然后遍历每个BenefitPackage对象,再遍历每个BenefitPackage对象中的MemberBenefit对象,如果其BenefitNo属性为"RHR041",则将其BenefitVal属性转为Integer类型,并添加到list中。
如果你的list.add()方法没有生效,建议你在循环结束之后,输出一下list的内容,检查一下其中是否包含了你想要加入的元素。如果是空的,那么可能是因为没有符合条件的MemberBenefit对象,或者是因为你的代码没有正确执行到list.add()这一行。
阅读全文