對象數組
1,案例
(1)創建一個學生類,屬性有姓名,年齡,分數,行爲有學習和喫飯
(2)創建一個學生類型的數組,在數組中存儲四個學生對象
(3)遍歷數組,打印學生信息
package com.baidu.demo;
public class Student {
private String name;
private int age;
private double score;
public Student() {
}
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() {return age; }
public void setAge(int age) { this.age = age; }
public double getScore() { return score; }
public void setScore(double score) { this.score = score; }
public void study(){ System.out.println("在學習Java..."); }
public void eat(){ System.out.println("在喫飯飯..."); }
}
package com.baidu.demo;
public class DemoStudent {
public static void main(String[] args) {
//創建學生數組
Student[] students = new Student[4];
//創建四個學生對象
Student stu1 = new Student("趙雲",20,85.0);
Student stu2 = new Student("王麗",20,79.0);
Student stu3 = new Student("李志",18,88.0);
Student stu4 = new Student("程晨",21,98.0);
//將學生對象存儲到學生數組當中
students[0] = stu1;
students[1] = stu2;
students[2] = stu3;
students[3] = stu4;
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
System.out.println(stu.getName()+"----"+stu.getAge()+"----"+stu.getScore());
stu.study();
stu.eat();
}
}
}
2,結果展示
3,注意:數組存儲對象有缺點,長度不可改變
集合類
之前學習過數組和StringBuilder這兩類容器。不過 StringBuilder的存儲的結果是一個字符串,滿足不了我們得需求,所以我們只能選擇數組容器,也就產生了對象數組。但是對象數組(一)是不利於維護(二)是不利於需求的變化,因爲數組的長度是固定的不可改變的,所以爲了解決使用對象數組所產生的問題,Java給我們提供了集合類,集合的長度是可變的。
ArrayList類的構造方法
1,構造方法
public ArrayList(){} 初始化一個長度爲10的空列表
注意:ArrayList集合底層是一個Object類型的數據,這個數組的默認長度就是10
2, ArrayList<E>:
(1)長度可改變
(2)底層是數組實現,是一個Object類型的數組
(3)<E>
:是一種特殊的數據類型,泛型,也代表未知的類型
(4)如何使用? 你將來期望集合中存儲什麼樣的數據類型,那麼你就指定泛型爲你期望存儲的數據類型
舉例:ArrayList<Student> arrayList = new ArrayList<Student>();
ArrayList<String> arrayList = new ArrayList<String>();
注意點:泛型只能是引用數據類型,不能是基本數據類型
基本數據類型 | 包裝類 |
---|---|
int | Integer |
short | Short |
byte | Byte |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
ArrayList類的成員方法
1,成員方法
(1)添加元素
public boolean add(E e) :將元素添加到集合的尾部
public void add(int index, E element):將元素添加到指定索引位置
(2)獲取元素
public E get(int index):根據索引獲取元素
(3)集合長度
public int size():獲取集合長度
(4)刪除元素
public E remove(int index):刪除指定索引位置的元素
public boolean remove(Object o):直接根據參數去集合中進行刪除
(5)修改元素
public E set(int index, E element):修改指定索引位置的元素
(6)其他方法
public void clear():清空集合中的元素
public boolean isEmpty():判斷集合中是否爲空
public boolean contains(Object o):判斷集合中是否包含參數o
public int indexOf(Object o):查找參數o第一次在集合中出現的索引位置
public int lastIndexOf(Object o):查找參數o最後一次在集合中出現的索引位置
public Object[] toArray():將集合轉換爲Object類型的數組
2,使用
package com.baidu.demo;
import java.util.ArrayList;
public class DemoArrayList {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
//boolean add(E e)
boolean flag = arrayList.add("花千骨");
arrayList.add("花千骨");
System.out.println(flag);
System.out.println(arrayList);
System.out.println("--------------");
//void add(int index, E element)
arrayList.add(1,"白子畫");
System.out.println(arrayList);
System.out.println("--------------");
//E get(int index)
String str = arrayList.get(2);
System.out.println(str);
System.out.println("--------------");
//int size()
int size = arrayList.size();
System.out.println(size);
System.out.println("--------------");
//E remove(int index)
String remove1 = arrayList.remove(1);
System.out.println(remove1);
System.out.println(arrayList);
System.out.println("--------------");
//boolean remove(Object o)
arrayList.remove("花千骨");
System.out.println(arrayList);
System.out.println("--------------");
//E set(int index, E element)
String set = arrayList.set(0, "糖寶");
System.out.println(set);
System.out.println(arrayList);
System.out.println("--------------");
//其他方法
//clear():
//arrayList.clear();
//System.out.println(arrayList);
//isEmpty()
boolean empty = arrayList.isEmpty();
System.out.println(empty);
//contains()
boolean contains = arrayList.contains("糖寶");
System.out.println(contains);
//indexOf()
int indexOf = arrayList.indexOf("糖寶");
System.out.println(indexOf);
//lastIndexOf()
int lastIndexOf = arrayList.lastIndexOf("糖寶");
System.out.println(lastIndexOf);
//toArray() Object[] objects = arrayList.toArray();
for (int i = 0; i < objects.length; i++) {
System.out.println(objects[i]);
}
}
}
ArrayList類案例
1,使用存儲字符串並遍歷輸出
package com.baidu.demo;
import java.util.ArrayList;
public class TestArrayList {
public static void main(String[] args) {
//創建集合對象
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("2020");
arrayList.add("你好呀");
arrayList.add("開心每一天");
arrayList.add("嘻嘻哈哈");
System.out.println(arrayList);
//遍歷輸出
System.out.println(arrayList.get(0));
System.out.println(arrayList.get(1));
System.out.println(arrayList.get(2));
System.out.println(arrayList.get(3));
System.out.println("-------------------");
for (int i = 0; i < 4; i++) {
System.out.println(arrayList.get(i));
}
System.out.println("-------------------");
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
}
}
結果展示
2,創建一個集合,存儲學生對象,學生對象的數據來自於鍵盤錄入,
最後,遍歷集合
package com.baidu.demo;
import java.util.ArrayList;
import java.util.Scanner;
public class TestArrayList {
public static void main(String[] args) {
//創建集合對象
ArrayList<Student> arrayList = new ArrayList<>();
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("請你輸入學生姓名:");
String name = sc.next();
if("李志".equals(name)){
System.out.println("hello李志");
break;
}
System.out.println("請你輸入學生年齡:");
int age = sc.nextInt();
//創建學生對象
Student stu = new Student(name,age);
arrayList.add(stu);
}
//遍歷
for (int i = 0; i < arrayList.size(); i++) {
Student student = arrayList.get(i);
System.out.println(student.getName()+"----------"+student.getAge());
}
}
}
結果展示
3,給定一個字符串數組如下:{“唐僧”,“孫悟空”,“孫猴子”,“豬悟能”,“沙悟淨”, “孫行者”, “小白龍”,“牛魔王”,“孫大聖”},將數組中的元素添加到集合中,並把所有姓孫的人員打印到控制檯上。
package com.baidu.demo;
import java.util.ArrayList;
public class Test02ArrayList {
public static void main(String[] args) {
String[] strings = {"唐僧","孫悟空","孫猴子","豬悟能","沙悟淨", "孫行者", "小白龍","牛魔王","孫大聖"};
//創建集合對象
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < strings.length; i++) {
//將數組中的元素添加到集合
arrayList.add(strings[i]);
}
System.out.println(arrayList);
System.out.println("------------");
//把所有姓孫的人員打印到控制檯上。
for (int i = 0; i < arrayList.size(); i++) {
String str = arrayList.get(i);
if(str.startsWith("孫")){
System.out.println(str);
}
}
System.out.println("------------");
for (int i = 0; i < arrayList.size(); i++) {
String str = arrayList.get(i);
if(str.startsWith("孫")){
arrayList.remove(i);
i--;
}
}
System.out.println(arrayList);
}
}
結果展示