集合:
爲什麼出現集合?
-
爲了方便對對象的操作,需要對對象存儲
-
StringBuilder的結果只能是一個字符串類型,不一定滿足我們的要求
-
數組的長度是固定的,適應不了長度變化的需求
集合類的特點:長度可變
ArrayList
-
大小可變數組的實現
-
<E>:是一種特殊的數據類型,泛型。 在出現E的地方我們使用引用數據類型替換即可 舉例:ArrayList<String>或ArrayList<Student>
構造方法
-
ArrayList()
添加元素
-
public boolean add(E e):添加元素
-
public void add(int index,E element):指定索引處,添加元素
package com.it02;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//創建集合對象
ArrayList<String> arr = new ArrayList<String>();
//添加元素
arr.add("hello");
arr.add("world");
arr.add("java");
arr.add(1,"android");
//
System.out.println("array:"+arr);
}
}
集合中的其他方法
ArrayList的其他方法
獲取元素
-
public E get(int index)
集合長度
-
public int size()
刪除元素
-
public boolean remove(Object o)
-
public E remove(int index):返回被刪除的元素
修改元素
-
public E set(int index,E element):修改制定索引的元素,返回被修改的元素
package com.it02;
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> arr = new ArrayList<String>();
//添加
arr.add("hello");
arr.add("world");
arr.add("java");
//獲取
System.out.println("arr:"+arr.get(0));
System.out.println("arr:"+arr.get(1));
System.out.println("arr:"+arr.get(2));
//返回集合的個數
System.out.println("arr:"+arr.size());
//刪除元素
System.out.println("arr:"+arr.remove("world"));
System.out.println("arr:"+arr.remove(1));
//修改元素
System.out.println("arr:"+arr);
System.out.println("arr:"+arr.set(0, "android"));
System.out.println("arr:"+arr);
}
}
集合例題-存儲字符串並遍歷
package com.it03;
import java.util.ArrayList;
/*
* 存儲字符串並遍歷
* 1-創建集合
* 2-添加字符串
* 3-遍歷
*/
public class ArrayListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> arr = new ArrayList<String>();
//添加元素
arr.add("張三丰");
arr.add("張無忌");
arr.add("謝遜");
arr.add("周芷若");
arr.add("成昆");
arr.add("宋遠橋");
arr.add("張翠山");
arr.add("張學良");
browse(arr);
}
public static void browse(ArrayList<String> arr) {
for (int x=0;x<arr.size();x++) {
String s = arr.get(x);
if(s.startsWith("張")) {
System.out.println(s);
}
}
}
}
對對象進行遍歷
package com.it03;
import java.util.ArrayList;
/*
* 遍歷對象
*/
public class ArrayListTest1 {
public static void main(String[] args) {
ArrayList<Student> arr = new ArrayList<Student>();
//創建學生對象
Student s1 = new Student("wang",20);
Student s2 = new Student("li",22);
Student s3 = new Student("zhang",24);
Student s4 = new Student("cai",26);
arr.add(s1);
arr.add(s2);
arr.add(s3);
arr.add(s4);
for (int x=0;x<arr.size();x++) {
Student s=arr.get(x);
System.out.println(s.getName()+"-----"+s.getAge());
}
}
}
創建集合,存儲學生對象,最後遍歷輸出
package com.it04;
import java.util.ArrayList;
import java.util.Scanner;
/*
* 創建一個集合,存儲學生對象,學生對象的數據來自於鍵盤錄入,最後遍歷集合
* 爲了方便實用,把學生類中的所有成員定義爲String類型
* 1-定義學生類
* 2-創建集合對象
* 3-鍵盤錄入對象
* 4-把學生對象作爲元素存儲到集合
*
*/
public class StudentDemo {
public static void main(String[] args) {
//開始創建集合對象
ArrayList<Student> arr = new ArrayList<Student>();
//調用方法
addStudent(arr);
addStudent(arr);
addStudent(arr);
//遍歷集合
for(int x=0;x<arr.size();x++) {
Student s =arr.get(x);
System.out.println(s.getName()+"----"+s.getAge());
}
}
//提高代碼的複用性,創建方法實現創建學生對象集合
public static void addStudent(ArrayList<Student> arr){
//鍵盤錄入數據創建學生對象
Scanner sc= new Scanner(System.in);
//System.out.println("請輸入學生的信息");
System.out.println("請輸入學生姓名:");
String name =sc.nextLine();
System.out.println("請輸入學生年齡:");
String age =sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
arr.add(s);
}
}
簡單的學生管理小程序
1-定義學生類
2-主界面
3-查看學生代碼
4-添加學生代碼
5-刪除學生代碼
6-修改學生代碼
學生類如下:
package com.it05;
/*
* 標準的學生類
*
*/
public class Student {
private String id;
private String name;
private String age;
private String address;
public Student() {
//super();
// TODO Auto-generated constructor stub
}
public Student(String id, String name, String age, String address) {
//super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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.it05;
import java.util.ArrayList;
import java.util.Scanner;
import com.it05.Student;
public class StudentMangerTest {
//爲了讓程序回到主界面,使用循環
public static void main(String[] args) {
//創建集合對象,用於存儲學生對象
ArrayList<Student> arr = 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 sc= new Scanner(System.in);
String choiceString = sc.nextLine();
//用switch語句
switch(choiceString) {
case "1":
//查看學生
findAllStudent(arr);
break;
case "2":
//添加學生
addStudent(arr);
break;
case "3":
//刪除學生
deletdStudent( arr);
break;
case "4":
//修改學生
updateStudent(arr);
break;
case "5":
//退出
//System.out.println("謝謝你的使用");
//break;
default:
System.out.println("謝謝你的使用");
//退出程序
System.exit(0);
break;
}
}
}
public static void findAllStudent(ArrayList<Student> arr){
//遍歷
//首先判斷集合是否有數據
if(arr.size()>0) {
System.out.println("學號"+"\t"+"姓名"+"\t"+"年齡"+"\t"+"住處");
for(int x=0;x<arr.size();x++) {
Student s =arr.get(x);
System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
}
}else {
System.out.println("不好意思,沒有數據存在,請重新選擇");
//return;
}
}
public static void addStudent(ArrayList<Student> arr) {
// 創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
// 爲了讓id被訪問到
String id;
// 循環
while (true) {
// System.out.println("請輸入學生的信息");
System.out.println("請輸入學生學號:");
id = sc.nextLine();
boolean flag = false;
// 判斷學號有沒有被佔用
for (int x = 0; x < arr.size(); x++) {
Student s = arr.get(x);
// 進行學號比較
if (s.getId().equals(id)) {
flag = true;
break;
}
}
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 addr = sc.nextLine();
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(addr);
// 添加集合操作時需要注意
arr.add(s);
System.out.println("添加成功");
}
//刪除
public static void deletdStudent(ArrayList<Student> arr) {
// 根據學號刪除學生
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要刪除學生的學號:");
String id = sc.nextLine();
// 遍歷
int index = -1;
for (int x = 0; x < arr.size(); x++) {
Student s = arr.get(x);
if (s.getId().equals(id)) {
index = x;
break;
}
}
if (index == -1) {
System.out.println("用戶不存在");
} else {
arr.remove(index);
System.out.println("成功");
}
}
public static void updateStudent(ArrayList<Student> arr) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要修改學生的學號:");
String id = sc.nextLine();
int index = -1;
for (int x = 0; x < arr.size(); x++) {
Student s = arr.get(x);
if (s.getId().equals(id)) {
index = x;
break;
}
}
if (index == -1) {
System.out.println("用戶不存在");
} else {
//修改
System.out.println("請輸入學生新姓名:");
String name = sc.nextLine();
System.out.println("請輸入學生新年齡:");
String age = sc.nextLine();
System.out.println("請輸入學生新住處:");
String addr = sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
s.setAddress(addr);
arr.set(index, s);
System.out.println("修改成功");
}
}
}