ArrayList
對於Arraylist來說,有一個尖括號代表泛型。
泛型:依舊是裝在集合當中的所有元素,全都是統一的什麼類型。
注意泛型只能是引用類型,不能是基本類型。
擴展:如果希望集合ArrayList當中存儲基本類型數據,必須使用基本類型對應的“包裝類”。
基本類型包裝類(引用類型,包裝類都位於java.lang包下)
byte Byte
short Short
int Interger【特殊】
long Long
float Float
double Double
char Character【特殊】
boolean Boolean
注意事項:
對於ArrayList集合來說,直接打印得到的不是地址值,而是內容
如果內容是空,得到的是空的中括號:[]
import java.util.ArrayList;
public class demo02Arraylist {
public static void main(String[] args) {
//創建一個ArrayList集合,集合的名稱是list,
//面裝的全都是String字符串類型的數據,在後面的插入時候只能插入字符串類型
ArrayList<String> list = new ArrayList<>();
System.out.println(list);//[]
//向集合當中添加一些數據,需要用到add方法(尾插法)
list.add("111");
System.out.println(list);//[111]
list.add("222");
list.add("333");
list.add("444");
System.out.println(list);//[111, 222, 333, 444]
}
}
如果想要添加一些整數的基本類型,則需要改變泛型的類型:
import java.util.ArrayList;
public class demo02ArrayListBasic {
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<>();
//錯誤的寫法!,泛型只能是引用類型,不能是基本類型
//ArrayList<int> listB = new ArrayList<>();
ArrayList<Integer> listB = new ArrayList<>();
listB.add(100);
listB.add(200);
listB.add(300);
System.out.println(listB);//[100, 200, 300]
//從JDK1.5+開始,支持自動裝箱,自動拆箱
//自動裝箱:基本類型 --> 包裝類型
//自動拆箱:包裝類型 --> 基本類型
//Integer num = listB.get(2);
int num = listB.get(2);
System.out.println("第二號元素是:"+num);//第二號元素是:300
}
}
下面介紹一些ArrayList集合常用方法和遍歷:
ArrayList當中的常用方法有:
public boolean add(E e):向集合當中添加元素,參數的類型和泛型一致
public E get(int index):從集合當中獲取元素,參數是索引編號,返回值就是對應位置的元素。
public E remove(int index) :從集合當中刪除元素,參數是索引編號,返回值就是被刪除掉的元素。
public int size():獲取集合的尺寸長度,返回值是集合中包含的元素個數。
實例代碼:
import java.util.ArrayList;
public class demo02ArraylistMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);//[]
//向集合中添加元素
boolean success = list.add("000");
System.out.println(list);//[000]
System.out.println("添加是否成功:"+success);//添加是否成功:true
list.add("111");
list.add("222");
list.add("333");
list.add("444");
System.out.println(list);//[000, 111, 222, 333, 444]
//得到集合中指定位置的集合元素,集合是從0開始的
String getString = list.get(2);
System.out.println("得到的元素爲:"+getString);//得到的元素爲:222
//獲取集合中元素的個數
int size = list.size();
System.out.println("此時集合中元素個數爲:"+size);//此時集合中元素個數爲:5
//刪除指定位置處的元素
String removeString = list.remove(3);
System.out.println("被移除的元素爲:"+removeString);//被移除的元素爲:333
//再次查看集合元素的個數,看是否少一
System.out.println("此時元素的個數爲:"+list.size());//此時元素的個數爲:4
}
}
ArrayList常用的遍歷方法:
import java.util.ArrayList;
public class demo02ArrayListEach {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("1111");
list.add("2222");
list.add("3333");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList練習1:生成6個1~33之間的隨機整數添加到集合,並遍歷集合。
import java.util.ArrayList;
import java.util.Random;
public class demo02ArrayListRandom {
public static void main(String[] args) {
//創建Random對象
Random r = new Random();
//創建ArrayList對象
ArrayList<Integer> list = new ArrayList<>();
//添加隨機數到集合
for(int i = 1; i<= 6; i++){
list.add(r.nextInt(33)+1);//r.nextInt(33)+1爲產生的隨機數,範圍在[1,33]
}
//遍歷集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList練習2,自定義5個學生對象,添加到集合並遍歷:
import java.util.ArrayList;
//學生類的定義
public class Student {
String name;
int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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 class demo02ArrayListStudent {
public static void main(String[] args) {
//創建ArrayList集合對象
ArrayList<Student> list = new ArrayList<>();
//創建學生對象
Student s1 = new Student("111",11);
Student s2 = new Student("222",22);
Student s3 = new Student("333",33);
Student s4 = new Student("444",44);
Student s5 = new Student("555",55);
//把學生對象作爲元素添加到集合中
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
//遍歷結合:for ,size,get
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getName() +"--------"+list.get(i).getAge());
}
}
}
ArrayList練習3(ArrayList集合作爲參數),定義一指定格式打印集合的方法(ArrayList類型座位參數),使用{}擴起集合,使用@分割每個元素,格式參照{元素@元素@元素}:
import java.util.ArrayList;
public class demo02ArrayListPrint {
public static void main(String[] args) {
//創建一個ArrayLis對象
ArrayList<String> list = new ArrayList<>();
//添加元素到集合中
list.add("洪七公");
list.add("張無忌");
list.add("楊過");
System.out.println(list);//[洪七公, 張無忌, 楊過]
//調用方法
PrintList(list);//{洪七公@張無忌@楊過}
}
public static void PrintList(ArrayList<String> list){//注意這裏的泛型也要寫上
//拼接左括號
System.out.print("{");
//遍歷集合
for (int i = 0; i < list.size(); i++) {
if(i == (list.size() -1) ){//在打印最後一個元素的時候要注意後面要有“}”封閉
System.out.print(list.get(i)+"}");
}else {
System.out.print(list.get(i)+"@");
}
}
}
}
ArrayList練習4(ArrayList集合作爲返回值),用一個大集合存入20個隨機數字,然後篩選其中的偶數元素,放到小集合當中,要求使用自定義的方法來實現篩選:
import java.util.ArrayList;
import java.util.Random;
public class demo02ArrayListReturn {
public static void main(String[] args) {
//創建ArrayList對象
ArrayList<Integer> list = new ArrayList<>();
//創建Random對象
Random r = new Random();
//向集合中添加20個元素
for(int i = 0; i < 20; i++){
list.add(r.nextInt(20)+1);
}
//未調用篩選方法之前
System.out.println(list);
//打印並且調用篩選方法
System.out.println(arrayListReturn(list));
}
/**
* 三要素:返回值類型,方法名稱,參數列表
* @param list
* @return
*/
public static ArrayList<Integer> arrayListReturn(ArrayList<Integer> list){
//循環查找
for (int i = 0; i < list.size(); i++) {
if(list.get(i) % 2 == 0){//是偶數則繼續
continue;
}else {
list.remove(i);//不是偶數則移除集合
i--;//同時需要把變量i的值-進行1操作
}
}
return list;
}
}