Java新手:物件陣列以及ArrayList集合類
阿新 • • 發佈:2018-12-15
物件陣列
- 基本型別的陣列:儲存的元素是基本型別,例如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=[張三, 李四, 王五, 王柳, 趙六]
輸出姓王的:
王五
王柳