List li=new ArrayList()和ArrayList li=new ArrayList()有什么区别
时间: 2023-08-20 07:47:27 浏览: 137
List li = new ArrayList()和ArrayList li = new ArrayList()的区别在于数据类型。
List是一个接口,它是Java集合框架中的一部分,它定义了一些操作集合的方法。List接口的实现类有ArrayList、LinkedList、Vector等。
ArrayList是实现了List接口的一个类,它是一个动态数组,可以根据需要自动扩容。因此,当你不知道需要存储多少数据时,使用ArrayList是比较合适的。
所以,List li = new ArrayList()是一个更加通用的写法,因为它将li声明为List类型,这样可以方便地更换为其他实现了List接口的类,而ArrayList li = new ArrayList()则将li声明为ArrayList类型,这样就只能使用ArrayList类的方法了。
相关问题
package Demo88; import java.util.ArrayList; public class Worke2Test { public static void main(String[] args) { ArrayList list=new ArrayList(); Worke2 n1 = new Worke2("zhang3",18,3000.0); Worke2 n2 = new Worke2("li4",25,3500.0); Worke2 n3 = new Worke2("wang5",22,3020.0); list.add(n1); list.add(n2); list.add(n3); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } ArrayList[] m = new ArrayList[list.size()+1]; for (int i = 0; i < list.size(); i++) { m[i]= ArrayList[list.size(i); }
在你给出的代码中,存在一些语法错误,我来帮你修改一下:
```java
package Demo88;
import java.util.ArrayList;
public class Worke2Test {
public static void main(String[] args) {
ArrayList<Worke2> list = new ArrayList<Worke2>();
Worke2 n1 = new Worke2("zhang3", 18, 3000.0);
Worke2 n2 = new Worke2("li4", 25, 3500.0);
Worke2 n3 = new Worke2("wang5", 22, 3020.0);
list.add(n1);
list.add(n2);
list.add(n3);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
ArrayList[] m = new ArrayList[list.size() + 1];
for (int i = 0; i < list.size(); i++) {
m[i] = new ArrayList();
m[i].add(list.get(i));
}
}
}
```
在修改后的代码中,我做了以下几个修改:
1. 在 ArrayList 的定义中,指定了泛型为 Worke2,这样就可以避免类型转换的问题。
2. 在第二个 for 循环中,对 m 数组进行初始化,并将 list 中的元素添加到对应的 ArrayList 中。
需要注意的是,这段代码并没有完成任何实际的功能,只是创建了一个 Worke2 类的对象列表并将其打印出来,并创建了一个包含 Worke2 对象的 ArrayList 数组。如果你需要完成其他操作,需要进一步编写代码。
解释一下下面这段代码@Override public List<List<Object>> getBankListExcel(InputStream in, String fileName) throws Exception { List<List<Object>> list = new ArrayList<>(); Workbook work = this.getWorkbook(in, fileName); if (null == work) { throw new Exception("创建Excel工作簿为空"); } Sheet sheet = null; Row row = null; Cell cell = null; for( int i = 0;i<work.getNumberOfSheets();i++) { sheet = (Sheet) work.getSheetAt(i); //sheet.getSheetName(); if (sheet == null) { continue; } for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) { row = sheet.getRow(j); if (row == null) { continue; } List<Object> li = new ArrayList<>(); for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) { cell = row.getCell(y); li.add(cell); } list.add(li); } } return list; }
这段代码是一个方法,用于从Excel文件中读取数据并返回一个包含数据的二维列表。下面是对代码的逐行解释:
1. `@Override`:这是一个注解,表示该方法是对父类或接口中同名方法的重写。
2. `public List<List<Object>> getBankListExcel(InputStream in, String fileName) throws Exception`:这是方法的定义,参数包括一个输入流和文件名,返回一个二维列表。
3. `List<List<Object>> list = new ArrayList<>();`:创建一个空的二维列表,用于存储读取到的数据。
4. `Workbook work = this.getWorkbook(in, fileName);`:调用一个名为`getWorkbook`的方法,传入输入流和文件名,返回一个`Workbook`对象,表示Excel工作簿。
5. `if (null == work) { throw new Exception("创建Excel工作簿为空"); }`:如果`work`为空,则抛出异常,表示无法创建Excel工作簿。
6. `Sheet sheet = null; Row row = null; Cell cell = null;`:创建变量`sheet`、`row`和`cell`,用于引用工作表、行和单元格对象。
7. `for( int i = 0;i<work.getNumberOfSheets();i++) {`:遍历工作簿中的所有工作表。
8. `sheet = (Sheet) work.getSheetAt(i);`:获取第`i`个工作表。
9. `if (sheet == null) { continue; }`:如果工作表为空,跳过当前循环,继续下一次循环。
10. `for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {`:遍历工作表中的所有行。
11. `row = sheet.getRow(j);`:获取第`j`行。
12. `if (row == null) { continue; }`:如果行为空,跳过当前循环,继续下一次循环。
13. `List<Object> li = new ArrayList<>();`:创建一个空的列表,用于存储当前行的数据。
14. `for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {`:遍历行中的所有单元格。
15. `cell = row.getCell(y);`:获取第`y`个单元格。
16. `li.add(cell);`:将单元格的值添加到当前行的列表中。
17. `list.add(li);`:将当前行的列表添加到最终的二维列表中。
18. `return list;`:返回包含从Excel中读取到的数据的二维列表。
该方法通过遍历每个工作表、每行、每个单元格,将读取到的数据存储在一个二维列表中,并最终返回该列表。
阅读全文