Java自学之路-Java基础教程-40:Java的列表接口List和列表类ArrayList
2018-03-19 16:55
766 查看
前面查询的数据库记录会有很多条,Java如何才能把很多条记录存起来使用呢?下面介绍一个接口列表类List,还有List的实现类ArrayList。
import java.util.ArrayList;
import java.util.List;List和ArrayList同属于java.util包中,List是一个interface,ArrayList则是implements这个interface。要使用这两个类,注意要使用import关键字引入。在Eclipse中,使用Ctrl+Shift+O组合键,可以直接自动引入相关的包。
ArrayList personList = new ArrayList();这一行语句创建了一个ArrayList列表类对象personList,这个类的add()方法可以用来把另外的对象存进来。
ArrayList personList = new ArrayList();Person person1 = new Person();personList.add(person1);
Person person2 = new Person();personList.add(person2);这样,就把两个Person的实例存进了ArrayList中。其实ArrayList和数组很相似,从名字可以看出来Array即是数组的意思。
结合Java的多态性,ArrayList personList = new ArrayList();可以用List personList = new ArrayList();来代替。这是因为ArrayList本身就是List的实现,ArrayList的对象也是一个List。只是接口List是不能被实例化的,也就是要创建对象就必须使用List的实现类去创建。
List中存了许多记录,又如何将这些记录从List中取出来呢?这就可以用for或while这样的循环语句,对List中的记录进行循环遍历。List有一个.size()方法,可以知道里面共有多少条记录。还有一个get()方法,可以把对应序号的记录拿出来。可见,List存的数据是有序的,这和数组也很类似。for(int i=0;i<personlist.size();i++ {<="" p="">Person person = (Person) personList.get(i);System.out.println(person.getNation());}
List里面的数据按照一定顺序存储,顺序号就如同数组的差不多,称为下标。List的下标也是从0开始,而且可以随时存入数据,总容量也动态地变长。这样可以在不知道数据记录共有多少的情况下,比数组更灵活地存入数据。
从List中使用get()拿到第i个数据时,由于get()方法返回类型是Object类型,所以要赋给Person类的对象person,就要使用强转()。这个强转()只能由已知的类型转为这个类型,比如已知List中存的就是Person类的对象,所以可以把这个存在List里的Object转为(Person)。前面已经提到过,所有的类和接口都是Object类型的,可以说在Java中Object处于顶级。
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb", "root", "root");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from new_table");
List personList = new ArrayList();
while (rs.next()) {
Person person = new Person();
person.setId(rs.getInt(1));
person.setNation(rs.getString(2));
personList.add(person);
}
for (int i = 0; i < personList.size(); i++) { Person person = (Person) personList.get(i); System.out.println(person.getNation()); } }上面的语句就是从查询数据库,到把数据存入List,再从List中取出数据。这种用法很常见,在实际工程中会经常用到。
下一节,我们就强转类型这个概念进一步作解释,并引入泛型机制对强转类型加深理解。
具有OCR和ASR功能,可以识别图片和录音中文字,并有多国语言翻译功能,可以作为便签或笔记,类似微博的图文应用
import java.util.ArrayList;
import java.util.List;List和ArrayList同属于java.util包中,List是一个interface,ArrayList则是implements这个interface。要使用这两个类,注意要使用import关键字引入。在Eclipse中,使用Ctrl+Shift+O组合键,可以直接自动引入相关的包。
ArrayList personList = new ArrayList();这一行语句创建了一个ArrayList列表类对象personList,这个类的add()方法可以用来把另外的对象存进来。
ArrayList personList = new ArrayList();Person person1 = new Person();personList.add(person1);
Person person2 = new Person();personList.add(person2);这样,就把两个Person的实例存进了ArrayList中。其实ArrayList和数组很相似,从名字可以看出来Array即是数组的意思。
结合Java的多态性,ArrayList personList = new ArrayList();可以用List personList = new ArrayList();来代替。这是因为ArrayList本身就是List的实现,ArrayList的对象也是一个List。只是接口List是不能被实例化的,也就是要创建对象就必须使用List的实现类去创建。
List中存了许多记录,又如何将这些记录从List中取出来呢?这就可以用for或while这样的循环语句,对List中的记录进行循环遍历。List有一个.size()方法,可以知道里面共有多少条记录。还有一个get()方法,可以把对应序号的记录拿出来。可见,List存的数据是有序的,这和数组也很类似。for(int i=0;i<personlist.size();i++ {<="" p="">Person person = (Person) personList.get(i);System.out.println(person.getNation());}
List里面的数据按照一定顺序存储,顺序号就如同数组的差不多,称为下标。List的下标也是从0开始,而且可以随时存入数据,总容量也动态地变长。这样可以在不知道数据记录共有多少的情况下,比数组更灵活地存入数据。
从List中使用get()拿到第i个数据时,由于get()方法返回类型是Object类型,所以要赋给Person类的对象person,就要使用强转()。这个强转()只能由已知的类型转为这个类型,比如已知List中存的就是Person类的对象,所以可以把这个存在List里的Object转为(Person)。前面已经提到过,所有的类和接口都是Object类型的,可以说在Java中Object处于顶级。
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb", "root", "root");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from new_table");
List personList = new ArrayList();
while (rs.next()) {
Person person = new Person();
person.setId(rs.getInt(1));
person.setNation(rs.getString(2));
personList.add(person);
}
for (int i = 0; i < personList.size(); i++) { Person person = (Person) personList.get(i); System.out.println(person.getNation()); } }上面的语句就是从查询数据库,到把数据存入List,再从List中取出数据。这种用法很常见,在实际工程中会经常用到。
下一节,我们就强转类型这个概念进一步作解释,并引入泛型机制对强转类型加深理解。
具有OCR和ASR功能,可以识别图片和录音中文字,并有多国语言翻译功能,可以作为便签或笔记,类似微博的图文应用
相关文章推荐
- Java自学之路-Java基础教程-18:Java四大特性之多态性以及接口interface
- Java自学之路-Java基础教程-12:Java基本语句之2-循环控制语句for
- Java自学之路-Java基础教程-19:Java四大特性之抽象性以及abstract
- Java自学之路-Java基础教程-9:Java的变量类型-8种基本类型和3种引用类型
- Java自学之路-Java基础教程-23:Java程序的打包和命令行运行jar包
- Java自学之路-Java基础教程-10:Java的4种运算符-算数运算符、关系运算符、逻辑运算符、位运算符
- Java自学之路-Java基础教程-5:Java代码的初步认识HelloWorld
- Java自学之路-Java基础教程-27:Java Web工程的运行和Tomcat服务器
- Java自学之路-Java基础教程-28:Java和HTML代码在JSP中的应用和运行
- JAVA基础再回首(十四)——集合框架、Collection接口、迭代器Iterator、List接口、ListIterator列表迭代器
- Java自学之路-Java基础教程-24:Java工程结构以及类路径classpath
- Java自学之路-Java基础教程-4:Java编辑器Eclipse安装使用和Java工程创建
- Java自学之路-Java基础教程-25:Java运行环境JRE及开发包JDK
- Java自学之路-Java基础教程-21:Java的方法参数以及Eclipse新建工程和类
- 老紫竹JAVA提高教程(7)-认识List列表之ArrayList
- Java自学之路-Java基础教程-13:Java基本语句之3-循环控制语句while和do while
- Java自学之路-Java基础教程-29:Java Web工程和Tomcat集成在Eclipse中部署
- Java自学之路-Java基础教程-2:运行Java程序的Java虚拟机环境塔建
- Java自学之路-Java基础教程-17:Java四大特性之继承性以及extends父类和子类
- Java自学之路-Java基础教程-11:Java基本语句之1-条件控制语句if和else