集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
1.ArrayList<E>
-
可调整大小的数组实现
-
<E>是一种特殊的数据类型,泛型。
怎样使用?
再出现E的地方使用我们引用数据类型替换即可
举例:ArrayList<String>、ArrayList<Student>
1.1ArrayList构造方法和添加方法
public class ArrayListDemo01 { public static void main(String[] args) { //创建一个空的集合对象 //ArrayList<String> array = new ArrayList<>(); ArrayList<String> array = new ArrayList<String>(); //将指定的元素追加到此集合的末尾 array.add("hello"); array.add("java"); //添加到指定元素 array.add(1,"this"); //java.lang.IndexOutOfBoundsException: 集合的索引越界 array.add(4,"无效"); //输出集合 System.out.println("array:"+array); } }
存储字符串并遍历
/* 需求:创建一个字符串的集合,存储三个字符串元素,使用程序实现再控制台遍历该集合 思路: 1.创建集合对象 2.往集合中添加字符串对象 3.遍历结合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现 4.遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现 for(int i = 0;i<集合对象.size();i++){ 集合对象.get(i) 就是指定索引处的元素 } */ public class ArrayListDemo02 { public static void main(String[] args) { //创建集合对象 ArrayList<String> array = new ArrayList<>(); //往集合中添加字符对象 array.add("索隆"); array.add("乌索普"); array.add("乔巴"); //遍历集合 for (int i = 0;i < array.size(); i++){ System.out.println(array.get(i)); } } }
1.2ArrayList集合常用方法
public class ArrayListDemo02 { public static void main(String[] args) { //创建集合对象 ArrayList<String> array = new ArrayList<>(); //往集合中添加字符对象 array.add("索隆"); array.add("乌索普"); array.add("乔巴"); //删除指定的元素,并返回该位置的元素 System.out.println(array.remove(1)); //如是没有这个索引 删除 则会报索引越界异常 java.lang.IndexOutOfBoundsException: //System.out.println(array.remove(4)); //修改指定位置的元素,并返回修改后的元素 array.set(0,"娜美"); //如是没有这个索引 修改 则会报索引越界异常 java.lang.IndexOutOfBoundsException: //System.out.println(array.set(4,"王路飞")); //返回指定索引位置的元素 System.out.println(array.get(0)); //如是没有这个索引 获取 则会报索引越界异常 java.lang.IndexOutOfBoundsException: //System.out.println(array.get(4)); //获取集合中的元素个数 System.out.println(array.size());// 2 //遍历集合 for (int i = 0;i < array.size(); i++){ System.out.println(array.get(i)); } } }
1.3.1存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现再控制台遍历该集合
思路:
1.定义学生类
2.创建集合对象
3.创建学生对象
4.添加学生对象到集合中
5.遍历集合,采用通用遍历格式实现
学生实体类
public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public Student() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Demo
/* • 需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现再控制台遍历该集合 • 思路: • 1.定义学生类 • 2.创建集合对象 • 3.创建学生对象 • 4.添加学生对象到集合中 • 5.遍历集合,采用通用遍历格式实现 */ public class ArrayListDemo01 { public static void main(String[] args) { //创建集合对象 ArrayList<Student> array = new ArrayList<>(); //创建学生对象 Student s1 = new Student("索隆",20); Student s2 = new Student("乔巴",36); Student s3 = new Student("乌索普",26); //添加到集合中 array.add(s1); array.add(s2); array.add(s3); //遍历 for (int i = 0; i < array.size(); i++) { Student s = array.get(i); System.out.println(s.getName()+","+s.getAge()); } } }
1.3.2存储学生对象并遍历(从键盘获取)[强化]
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合 学生的姓名和年龄来自于键盘录入
思路: 1.定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型 2.创建集合对象 3.键盘录入学生对象所需要的数据 4.创建学生对象,把键盘录入的数据赋值给学生对象的成员变量 5.往集合中添加学生对象 6.遍历集合,采用通用遍历格式实现
学生实体类
public class Student { private String name; private String age; public Student() { } public Student(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
Demo
/* 需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合 学生的姓名和年龄来自于键盘录入 • 思路: • 1.定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型 • 2.创建集合对象 • 3.键盘录入学生对象所需要的数据 • 4.创建学生对象,把键盘录入的数据赋值给学生对象的成员变量 • 5.往集合中添加学生对象 • 6.遍历集合,采用通用遍历格式实现 */ public class ArrayListDemo01 { private static Scanner sc = new Scanner(System.in); private static ArrayList<Student> array = new ArrayList<>(); public static void main(String[] args) { //录入三次 提高代码复用性 lr(); lr(); lr(); //遍历集合 for (int i = 0; i < array.size(); i++) { Student s = array.get(i); System.out.println(s.getName()+","+s.getAge()); } } public static void lr(){ //从键盘录入学生姓名 System.out.println("请输入学生名:"); String name = sc.nextLine(); //从键盘录入学生年龄 System.out.println("请输入学生年龄:"); String age = sc.nextLine(); //创建学生对象 Student s = new Student(name,age); array.add(s); } }