1. 程式人生 > >Java新手:物件陣列以及ArrayList集合類

Java新手:物件陣列以及ArrayList集合類

物件陣列
  • 基本型別的陣列:儲存的元素是基本型別,例如int[] arr ={1,2,3};
  • 物件陣列:儲存的元素是引用型別。例如Student s = new Student[3];Student是一個自定義的學生類,s[0],s[1],s[2]的元素型別都是Student類,都可以指向一個Student物件。
//自定義的學生類
publicclass Student {
	private String name;
	private int age;	
	//自動生成無參構造方法:程式碼區域右鍵 -- Source -- Generate Constructors from Superclass...	
	public Student() {		
	}
	//自動生成帶參構造方法:程式碼區域右鍵 -- Source -- Generate Constructor using Fields...		
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}
	//自動生成getXxx()/setXxx():程式碼區域右鍵 -- Source -- Generate Getters and Setters...
	public String getName() {
		returnname;
	}
	publicvoid setName(String name) {
		this.name = name;
	}
	publicint getAge() {
		returnage;
	}
	publicvoid setAge(int age) {
		this.age = age;
	}	
}

測試類,生成學生陣列,加入陣列元素並且遍歷學生陣列

publicstaticvoid main(String[] args) {
		//建立學生陣列
		Student[] students = new Student[3];
		//建立學生物件
		Student s1 = new Student("小二",40);
		Student s2 = new Student("張三",35);
		Student s3 = new Student("李四",30);
		
		//把學生物件作為元素賦值給學生陣列
		students[0] = s1;
		students[1] = s2;
		students[2] = s3;
		
		//遍歷學生陣列
		for(int x=0; x<students.length; x++) {
			Student s = students[x];
			System.out.println(s);
			System.out.println(s.getName()+"---"+s.getAge());
		}
	}
}

輸出結果:

[email protected]
小二---40
[email protected]
張三---35
[email protected]
李四---30

注意: 類的class檔案、類中的成員變數、構造方法和成員方法都放在方法區中,new出來的物件都放在堆裡,接收物件的變數都放在棧裡,存放的是堆裡物件的地址。所以輸出s時,輸出的是s所指向的物件的地址,可以通過成員方法的呼叫取出資料。

ArrayList集合

1.我們學習的面向物件程式語言中,對事物的描述都是通過物件來體現,堆裡方便對多個物件進行操作,我們必須對對個物件進行儲存,這樣就不能是一個基本的變數,而是容器型別的變數。
StringBuilder的結果只能是一個字串型別,不一定能滿足需求。
物件陣列的長度是固定的,如果有時候元素的個數不確定,就無法定義出陣列的長度,因此提供了ArrayList集合類。
2.集合類ArrayList是在java.util包中,因此需要導包。是一個長度大小可變陣列的實現。
3.ArrayList的方法:

  • 構造方法:ArrayList()
  • 新增方法:public boolean add(E e):新增元素
    public void add(int index,E element):在指定的索引處新增一個元素
public static void main(String[] args) {
		//建立集合物件
		ArrayList<String> array = new ArrayList<String>();	
		//新增元素:public boolean add(E e)
		array.add("hello");
		array.add("world");
		array.add("zhongguo");
		//public void add(int index,E element):在指定的索引處新增一個元素
		array.add(2, "nihao");
		System.out.println("array:"+array);
}

輸出結果:

array:[hello, world, nihao, zhongguo]
  • 獲取元素: public E get(int index):返回指定索引處的元素 ,不改變集合
public static void main(String[] args) {
		//建立集合物件
		ArrayList<String> array = new ArrayList<String>();	
		//新增元素
		array.add("hello");
		array.add("world");
		array.add("zhongguo");
		//public E get(int index):返回指定索引處的元素
		System.out.println("get:"+array.get(0));
		System.out.println("get:"+array.get(1));
		System.out.println("get:"+array.get(2));
		System.out.println("array:"+array);
	}

輸出結果:

get:hello
get:world
get:zhongguo
array:[hello, world, zhongguo]
  • 集合長度: public int size():返回集合中的元素的個數,不改變集合
public static void main(String[] args) {
		//建立集合物件
		ArrayList<String> array = new ArrayList<String>();		
		//新增元素
		array.add("hello");
		array.add("world");
		array.add("zhongguo");		
		//public int size():返回集合中的元素的個數
		System.out.println("size:"+array.size());
}

輸出結果:

size:3
  • 刪除元素: public boolean remove(Object o):刪除指定的元素,返回刪除是否成功 ,刪除成功改變集合。
    public E remove(int index):刪除指定索引處的元素,返回被刪除的元素,刪除成功改變集合。
public static void main(String[] args) {
		//建立集合物件
		ArrayList<String> array = new ArrayList<String>();		
		//新增元素
		array.add("hello");
		array.add("world");
		array.add("zhongguo");		
		System.out.println("array=="+array);
		//public boolean remove(Object o):刪除指定的元素,返回刪除是否成功
		System.out.println("remove:"+array.remove("world"));//true
		System.out.println("array:"+array);	
		System.out.println("remove:"+array.remove("world"));//false
	    System.out.println("array:"+array);	
		//public E remove(int index):刪除指定索引處的元素,返回被刪除的元素
		System.out.println("remove:"+array.remove(0));
		System.out.println("array="+array);
}

輸出結果:

array==[hello, world, zhongguo]
remove:true
array:[hello, zhongguo]
remove:false
array:[hello, zhongguo]
remove:hello
array=[zhongguo]
  • 修改元素: public E set(int index,E element):修改指定索引處的元素,返回被修改的元素,改變集合。
public static void main(String[] args) {
		//建立集合物件
		ArrayList<String> array = new ArrayList<String>();		
		//新增元素
		array.add("hello");
		array.add("world");
		array.add("zhongguo");		
		System.out.println("array=="+array);
		//public E set(int index,E element):修改指定索引處的元素,返回被修改的元素
		System.out.println("set:"+array.set(0, "你好"));		
		//輸出
		System.out.println("array:"+array);
	}

輸出結果:

array==[hello, world, zhongguo]
set:hello
array:[你好, world, zhongguo]

注意: < E >是一個特殊的型別,泛型。在出現E的地方使用引用資料型別替換即可。
4.遍歷ArrayList
要求:將字串陣列中的元素新增到集合中,並且把姓王的打印出來

public static void main(String[] args) {
		String[] str = {"張三","李四","王五","王柳","趙六"};
		//建立集合物件
		ArrayList<String> array = new ArrayList<String>();		
		//遍歷陣列,增加到集合類中
		for(int i =0;i<str.length;i++){
			array.add(str[i]);
		}
		//輸出集合類中全部的
		System.out.println("array="+array);
		//遍歷集合類,輸出姓王的
		System.out.println("輸出姓王的:");
		for(int i =0;i<array.size();i++){
			String s = array.get(i);
			if(s.startsWith("王")){//字串以什麼開頭
				//輸出
				System.out.println(s);
			}
		}				
	}

輸出結果:

array=[張三, 李四, 王五, 王柳, 趙六]
輸出姓王的:
王五
王柳