Java-ArrayList集合

集合:
爲什麼出現集合?

  •  爲了方便對對象的操作,需要對對象存儲
    
  •  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("修改成功");
			

			
		}
		
		
	}
	
	
		

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章