JAVA學習——9.Array和ArrayList類

Array類

Arrays 類包含用於操作數組的各種方法(例如排序和搜索)。還包含一個靜態工廠,允許將數組轉爲 List。

Array類常用方法

import java.util.Arrays
在這裏插入圖片描述
例如:

import java.util.Arrays;
import java.util.Random;

public class ArraysDemo {
    public static void main(String[] args) {
        int[] arr = new int[10];
        //將數組元素都設爲9
        Arrays.fill(arr, 9);
        System.out.println("fill:" + Arrays.toString(arr));
        Random random = new Random();
        for (int i = 0; i < arr.length; i++) {
            //使用100以內的隨機數賦值數組
            arr[i] = random.nextInt(101);
        }
        //重新賦值後的數組
        System.out.println("重新賦值:" + Arrays.toString(arr));
        //將索引爲5的元素設爲50
        arr[5] = 50;
        //排序
        Arrays.sort(arr);
        //排序後的數組
        System.out.println("sort排序後:" + Arrays.toString(arr));
        //查找50的位置
        int i = Arrays.binarySearch(arr, 50);
        System.out.println("值爲50的元素索引:"+i);
        //複製一份新數組
        int[] newArr = Arrays.copyOf(arr, arr.length);
        //比較
        System.out.println("equals:"+Arrays.equals(arr, newArr));
    }
}

ArrayList

ArrayList 類實現一個可增長的動態數組,位於 java.util.ArrayList。實現了 List 接口,它可以存儲不同類型的對象(包括 null 在內),而數組則只能存放特定數據類型的值。
例如:

/**
 * 學生類
 */
public class Student {
    public String id;
    public String name;
    public Student(String id, String name){
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return “Student{+
                “id=‘” + id + ‘\’’ +, name=‘” + name + ‘\’’ +};
    }
}
import java.util.*;


public class ListTest {


    //集合後面的<>代表泛型的意思
    //泛型是規定了集合元素的類型
    /**
     * 用於存放學生的List
     */
    public List<Student> students;


    public ListTest() {
        this.students = new ArrayList<Student>();
    }

    /**
     * 用於往students中添加學生
     */
    public void testAdd() {
        // 創建一個學生對象,並通過調用add方法,添加到學生管理List中
        Student st1 = new Student("1", "張三");
        students.add(st1);

        // 取出 List中的Student對象 索引爲0 也就是第一個
        Student temp = students.get(0);
        System.out.println("添加了學生:" + temp.id + ":" + temp.name);

        Student st2 = new Student("2", "李四");
        //添加到list中,插入到索引爲0的位置,也就是第一個
        students.add(0, st2);
        Student temp2 = students.get(0);
        System.out.println("添加了學生:" + temp2.id + ":" + temp2.name);

        // 對象數組的形式添加
        Student[] student = {new Student("3", "王五"), new Student("4", "馬六")};

        // Arrays類包含用來操作數組(比如排序和搜索)的各種方法,asList() 方法用來返回一個受指定數組支持的固定大小的列表
        students.addAll(Arrays.asList(student));
        Student temp3 = students.get(2);
        Student temp4 = students.get(3);
        System.out.println("添加了學生:" + temp3.id + ":" + temp3.name);
        System.out.println("添加了學生:" + temp4.id + ":" + temp4.name);
        Student[] student2 = {new Student("5", "周七"), new Student("6", "趙八")};
        students.addAll(2, Arrays.asList(student2));
        Student temp5 = students.get(2);
        Student temp6 = students.get(3);
        System.out.println("添加了學生:" + temp5.id + ":" + temp5.name);
        System.out.println("添加了學生:" + temp6.id + ":" + temp6.name);
    }


    /**
     * 取得List中的元素的方法
     */
    public void testGet() {
        int size = students.size();
        for (int i = 0; i < size; i++) {
            Student st = students.get(i);
            System.out.println("學生:" + st.id + ":" + st.name);

        }
    }


    /**
     * 通過迭代器來遍歷
     * 迭代器的工作是遍歷並選擇序列中的對象,Java 中 Iterator 只能單向移動
     */
    public void testIterator() {
        // 通過集合的iterator方法,取得迭代器實例
        Iterator<Student> it = students.iterator();
        System.out.println(“有如下學生(通過迭代器訪問):”);
        while (it.hasNext()) {

            Student st = it.next();
            System.out.println(“學生” + st.id +:+ st.name);
        }
    }

    /**
     * 通過for each 方法訪問集合元素
     *
     */
    public void testForEach() {
        System.out.println(“有如下學生(通過for each):");
        for (Student obj : students) {
            Student st = obj;
            System.out.println("學生:" + st.id + ":" + st.name);
        }
        //使用java8 Steam將學生排序後輸出
        students.stream()//創建Stream
                //通過學生id排序
                .sorted(Comparator.comparing(x -> x.id))
                //輸出
                .forEach(System.out::println);
    }

    /**
     * 修改List中的元素
     *
     */
    public void testModify() {
        students.set(4, new Student("3", "吳酒"));
    }

    /**
     * 刪除List中的元素
     *
     */
    public void testRemove() {
        Student st = students.get(4);
        System.out.println("我是學生:" + st.id + ":" + st.name + ",我即將被刪除");
        students.remove(st);
        System.out.println("成功刪除學生!");
        testForEach();
    }


    public static void main(String[] args) {
        ListTest lt = new ListTest();
        lt.testAdd();
        lt.testGet();
        lt.testIterator();
        lt.testModify();
        lt.testForEach();
        lt.testRemove();

    }
}
$ javac Student.java ListTest.java
$ java ListTest

添加了學生:1:張三
添加了學生:2:李四
添加了學生:3:王五
添加了學生:4:馬六
添加了學生:5:周七
添加了學生:6:趙八
學生:2:李四
學生:1:張三
學生:5:周七
學生:6:趙八
學生:3:王五
學生:4:馬六
有如下學生(通過迭代器訪問):
學生2:李四
學生1:張三
學生5:周七
學生6:趙八
學生3:王五
學生4:馬六
有如下學生(通過for each):
學生:2:李四
學生:1:張三
學生:5:周七
學生:6:趙八
學生:3:吳酒
學生:4:馬六
Student{id=1, name=‘張三’}
Student{id=2, name=‘李四’}
Student{id=3, name=‘吳酒’}
Student{id=4, name=‘馬六’}
Student{id='5', name='周七'}
Student{id='6', name='趙八'}
我是學生:3:吳酒,我即將被刪除
成功刪除學生!
有如下學生(通過for each):
學生:2:李四
學生:1:張三
學生:5:周七
學生:6:趙八
學生:4:馬六
Student{id='1', name='張三'}
Student{id='2', name='李四'}
Student{id='4', name='馬六'}
Student{id='5', name='周七'}
Student{id='6', name='趙八'}

在上面的代碼中,用到了 Arrays 類, Arrays 包含用來操作數組(比如排序和搜索)的各種方法,asList() 方法用來返回一個受指定數組支持的固定大小的列表。

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