目錄
1、ArrayList 構造方法
ArrayList類概述
什么是集合
提供一種存儲空間可變的存儲模型,存儲的數據容量可以發生改變 ‘
ArrayList集合的特點 底層是數組實現的,長度可以變化
泛型的使用 用於約束集合中存儲元素的數據類型
package com.itheima_01; import java.util.ArrayList; /* ArrayList構造方法: public ArrayList():創建一個空的集合對象 ArrayList添加方法: public boolean add(E e):將指定的元素追加到此集合的末尾 public void add(int index,E element):在此集合中的指定位置插入指定的元素 */ public class ArrayListDemo01 { public static void main(String[] args) { //public ArrayList():創建一個空的集合對象 // ArrayList<String> array = new ArrayList<>(); ArrayList<String> array = new ArrayList<String>(); //public boolean add(E e):將指定的元素追加到此集合的末尾 // System.out.println(array.add("hello")); array.add("hello"); array.add("world"); array.add("java"); //public void add(int index,E element):在此集合中的指定位置插入指定的元素 array.add(1,"javase"); // array.add(3,"javaee"); //IndexOutOfBoundsException // array.add(4,"javaee"); //輸出集合 System.out.println("array:" + array); } }
2、ArrayList 類常用方法
package com.itheima_01; import java.util.ArrayList; /* ArrayList常用方法: public boolean remove(Object o):刪除指定的元素,返回刪除是否成功 public E remove(int index):刪除指定索引處的元素,返回被刪除的元素 public E set(int index,E element):修改指定索引處的元素,返回被修改的元素 public E get(int index):返回指定索引處的元素 public int size():返回集合中的元素的個數 */ public class ArrayListDemo02 { public static void main(String[] args) { //創建集合 ArrayList<String> array = new ArrayList<String>(); //添加元素 array.add("hello"); array.add("world"); array.add("java"); //public boolean remove(Object o):刪除指定的元素,返回刪除是否成功 // System.out.println(array.remove("world")); // System.out.println(array.remove("javaee")); //public E remove(int index):刪除指定索引處的元素,返回被刪除的元素 // System.out.println(array.remove(1)); //IndexOutOfBoundsException // System.out.println(array.remove(3)); //public E set(int index,E element):修改指定索引處的元素,返回被修改的元素 // System.out.println(array.set(1,"javaee")); //IndexOutOfBoundsException // System.out.println(array.set(3,"javaee")); //public E get(int index):返回指定索引處的元素 // System.out.println(array.get(0)); // System.out.println(array.get(1)); // System.out.println(array.get(2)); //IndexOutOfBoundsException //System.out.println(array.get(3)); //public int size():返回集合中的元素的個數 System.out.println(array.size()); //輸出集合 System.out.println("array:" + array); } }
集合存儲字符串遍歷
package com.itheima_02; import java.util.ArrayList; /* 需求: 創建一個存儲字符串的集合,存儲3個字符串元素,使用程序實現在控制台遍歷該集合 思路: 1:創建集合對象 2:往集合中添加字符串對象 3:遍歷集合,首先要能夠獲取到集合中的每一個元素,這個通過get(int index)方法實現 4:遍歷集合,其次要能夠獲取到集合的長度,這個通過size()方法實現 5:遍歷集合的通用格式 */ public class ArrayListTest01 { public static void main(String[] args) { //創建集合對象 ArrayList<String> array = new ArrayList<String>(); //往集合中添加字符串對象 array.add("劉正風"); array.add("左冷禪"); array.add("風清揚"); //遍歷集合,首先要能夠獲取到集合中的每一個元素,這個通過get(int index)方法實現 // System.out.println(array.get(0)); // System.out.println(array.get(1)); // System.out.println(array.get(2)); // for(int i=0; i<3; i++) { // System.out.println(array.get(i)); // } //遍歷集合,其次要能夠獲取到集合的長度,這個通過size()方法實現 // System.out.println(array.size()); //遍歷集合的通用格式 for(int i=0; i<array.size(); i++) { String s = array.get(i); System.out.println(s); } } }
package com.itheima_03; /* 學生類 為了鍵盤錄入數據方便,把學生類中的成員變量都定義為String類型 */ 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; } } // ----------------------------------------------------------------------- package com.itheima_03; import java.util.ArrayList; import java.util.Scanner; /* 需求:創建一個存儲學生對象的集合,存儲3個學生對象,使用程序實現在控制台遍歷該集合 學生的姓名和年齡來自於鍵盤錄入 思路: 1:定義學生類,為了鍵盤錄入數據方便,把學生類中的成員變量都定義為String類型 2:創建集合對象 3:鍵盤錄入學生對象所需要的數據 4:創建學生對象,把鍵盤錄入的數據賦值給學生對象的成員變量 5:往集合中添加學生對象 6:遍歷集合,采用通用遍歷格式實現 */ public class ArrayListTest { public static void main(String[] args) { //創建集合對象 ArrayList<Student> array = new ArrayList<Student>(); /* //鍵盤錄入學生對象所需要的數據 Scanner sc = new Scanner(System.in); System.out.println("請輸入學生姓名:"); String name = sc.nextLine(); System.out.println("請輸入學生年齡:"); String age = sc.nextLine(); //創建學生對象,把鍵盤錄入的數據賦值給學生對象的成員變量 Student s = new Student(); s.setName(name); s.setAge(age); //往集合中添加學生對象 array.add(s); */ //為了提高代碼的復用性,我們用方法來改進程序 addStudent(array); addStudent(array); addStudent(array); //遍歷集合,采用通用遍歷格式實現 for (int i = 0; i < array.size(); i++) { Student s = array.get(i); System.out.println(s.getName() + "," + s.getAge()); } } /* 兩個明確: 返回值類型:void 參數:ArrayList<Student> array */ public static void addStudent(ArrayList<Student> array) { //鍵盤錄入學生對象所需要的數據 Scanner sc = new Scanner(System.in); System.out.println("請輸入學生姓名:"); String name = sc.nextLine(); System.out.println("請輸入學生年齡:"); String age = sc.nextLine(); //創建學生對象,把鍵盤錄入的數據賦值給學生對象的成員變量 Student s = new Student(); s.setName(name); s.setAge(age); //往集合中添加學生對象 array.add(s); } }
簡單的學生管理系統
學生類
package com.itheima; /* 學生類 Alt+Insert 根據自己的需要進行選擇 */ public class Student { //學號 private String sid; //姓名 private String name; //年齡 private String age; //居住地 private String address; public Student() { } public Student(String sid, String name, String age, String address) { this.sid = sid; this.name = name; this.age = age; this.address = address; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } 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; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
管理系統
package com.itheima; import java.util.ArrayList; import java.util.Scanner; /* 學生管理系統 */ public class StudentManager { public static void main(String[] args) { //創建集合對象,用於存儲學生數據 ArrayList<Student> array = new ArrayList<Student>(); //用循環完成再次回到主界面 while (true) { //用輸出語句完成主界面的編寫 System.out.println("--------歡迎來到學生管理系統--------"); System.out.println("1 添加學生"); System.out.println("2 刪除學生"); System.out.println("3 修改學生"); System.out.println("4 查看所有學生"); System.out.println("5 退出"); System.out.println("請輸入你的選擇:"); //用Scanner實現鍵盤錄入數據 Scanner sc = new Scanner(System.in); String line = sc.nextLine(); //用switch語句完成操作的選擇 switch (line) { case "1": addStudent(array); break; case "2": deleteStudent(array); break; case "3": // System.out.println("修改學生"); updateStudent(array); break; case "4": findAllStudent(array); break; case "5": System.out.println("謝謝使用"); System.exit(0); //JVM退出 } } } //定義一個方法,用於添加學生信息 public static void addStudent(ArrayList<Student> array) { //鍵盤錄入學生對象所需要的數據,顯示提示信息,提示要輸入何種信息 Scanner sc = new Scanner(System.in); //為了讓sid在while循環外面被訪問到,我們就把它定義在了循環外 String sid; //為了讓程序能夠回到這里,我們使用循環實現 while (true) { System.out.println("請輸入學生學號:"); sid = sc.nextLine(); boolean flag = isUsed(array, sid); if (flag) { System.out.println("你輸入的學號已經被使用,請重新輸入"); } else { break; } } System.out.println("請輸入學生姓名:"); String name = sc.nextLine(); System.out.println("請輸入學生年齡:"); String age = sc.nextLine(); System.out.println("請輸入學生居住地:"); String address = sc.nextLine(); //創建學生對象,把鍵盤錄入的數據賦值給學生對象的成員變量 Student s = new Student(); s.setSid(sid); s.setName(name); s.setAge(age); s.setAddress(address); //將學生對象添加到集合中 array.add(s); //給出添加成功提示 System.out.println("添加學生成功"); } //定義一個方法,判斷學號是否被使用 public static boolean isUsed(ArrayList<Student> array, String sid) { //如果與集合中的某一個學生學號相同,返回true;如果都不相同,返回false boolean flag = false; for(int i=0; i<array.size(); i++) { Student s = array.get(i); if(s.getSid().equals(sid)) { flag = true; break; } } return flag; } //定義一個方法,用於查看學生信息 public static void findAllStudent(ArrayList<Student> array) { //判斷集合中是否有數據,如果沒有顯示提示信息 if (array.size() == 0) { System.out.println("無信息,請先添加信息再查詢"); //為了讓程序不在往下執行,給出return; return; } //顯示表頭信息 //\t 其實就是tab鍵的位置 System.out.println("學號\t\t\t姓名\t\t年齡\t\t居住地"); //將集合中數據取出按照對應格式顯示學生信息,年齡顯示補充“歲” for (int i = 0; i < array.size(); i++) { Student s = array.get(i); System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "歲\t\t" + s.getAddress()); } } //定義一個方法,用於刪除學生信息 public static void deleteStudent(ArrayList<Student> array) { //鍵盤錄入要刪除的學生學號,顯示提示信息 Scanner sc = new Scanner(System.in); System.out.println("請輸入你要刪除的學生的學號:"); String sid = sc.nextLine(); //在刪除/修改學生操作前,對學號是否存在進行判斷 //如果不存在,顯示提示信息 //如果存在,執行刪除/修改操作 int index = -1; for (int i = 0; i < array.size(); i++) { Student s = array.get(i); if (s.getSid().equals(sid)) { // int index = i; index = i; break; } } if (index == -1) { System.out.println("該信息不存在,請重新輸入"); } else { array.remove(index); //給出刪除成功提示 System.out.println("刪除學生成功"); } } //定義一個方法,用於修改學生信息 private static void updateStudent(ArrayList<Student> array) { //鍵盤錄入要修改的學生學號,顯示提示信息 Scanner sc = new Scanner(System.in); System.out.print("請輸入你要修改的學生的學號:"); String sid = sc.nextLine(); //創建學生對象 Student s = new Student(); s.setSid(sid); int index = -1; //遍歷集合修改對應的學生信息 for (int i = 0; i < array.size(); i++) { Student student = array.get(i); //鍵盤錄入要修改的學生信息 if (student.getSid().equals(sid)) { System.out.print("請輸入學生新姓名:"); String name = sc.nextLine(); System.out.print("請輸入學生新年齡:"); String age = sc.nextLine(); System.out.print("請輸入學生新地址:"); String address = sc.nextLine(); s.setName(name); s.setAge(age); s.setAddress(address); array.set(i, s); index = i; break; } } if (index == -1) { //判斷是不是沒有該信息 System.out.println("該信息不存在,請重新輸入!"); } else { //給出修改成功提示 System.out.println("修改學生成功!"); } } }