2020-11-14 java------------巢狀遍歷集合,練習scanner和stringbuiled排序等API

tutou_girl發表於2020-11-14

巢狀集合遍歷

import java.util.ArrayList;

public class demo {
    public static void main(String[] args) {
        ArrayList<ArrayList<Student>> bigArraylist=new ArrayList<ArrayList<Student>>(); //建立大集合
        ArrayList<Student> firstArraylist=new ArrayList<>();
        Student s1=new Student("孫悟空",11);
        Student s2=new Student("豬八戒",12);
        Student s3=new Student("沙和尚",13);
        firstArraylist.add(s1);
        firstArraylist.add(s2);
        firstArraylist.add(s3);
        bigArraylist.add(firstArraylist);
        ArrayList<Student> secondAarrylist=new ArrayList<>();
        Student s11=new Student("諸葛亮",111);
        Student s22=new Student("劉備",122);
        Student s33=new Student("曹操",133);
        secondAarrylist.add(s11);
        secondAarrylist.add(s22);
        secondAarrylist.add(s33);
        bigArraylist.add(secondAarrylist);
        ArrayList<Student> lastAarrylist=new ArrayList<>();
        Student s111=new Student("楊冪",15);
        Student s222=new Student("唐嫣",16);
        Student s333=new Student("劉詩詩",17);
        secondAarrylist.add(s111);
        secondAarrylist.add(s222);
        secondAarrylist.add(s333);
        bigArraylist.add(lastAarrylist);
        //遍歷集合
        for(ArrayList<Student> bigClass: bigArraylist)
            for (Student smallClass : bigClass)
                System.out.println(smallClass.getName()+"--------"+smallClass.getAge());
    }

}

產生10個20以內不重複的隨機數

import java.util.ArrayList;
import java.util.Random;

public class demo {
    public static void main(String[] args) {
        Random random=new Random();
        ArrayList<Integer> array=new ArrayList<>();
        int count=0;
        while (count<10){
            int number=random.nextInt(20)+1;  //0~19
            if (!array.contains(number)) {
                array.add(number);
                count++;
            }
        }
        for (Integer i : array)
            System.out.println(i);

    }

}

鍵盤錄入多個資料,以0結束,要求在控制檯輸出這些值中的最大值

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class demo {
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        ArrayList<Integer> arry=new ArrayList<>();
        while (true){
            System.out.println("請輸入資料:");
            int number=sc.nextInt();
            if (number!=0){
                arry.add(number);
            }
            else
                break;
        }
        //toArray方法要求引數是陣列
        //public <T> T[] toArray(T[] a)
        Integer[] i=new Integer[arry.size()];
         arry.toArray(i);
         Arrays.sort(i); //Arrays工具類下sort方法
        System.out.println("陣列最大值是"+i[i.length-1]);
    }

}

改動一下最後能實現輸出陣列並列印最大值

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class demo {
    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);
        ArrayList<Integer> arry=new ArrayList<>();
        while (true){
            System.out.println("請輸入資料:");
            int number=sc.nextInt();
            if (number!=0){
                arry.add(number);
            }
            else
                break;
        }
        Integer[] i=new Integer[arry.size()];
         arry.toArray(i);
         Arrays.sort(i);
        System.out.println("陣列是:"+arryToString(i)+"最大值是:"+i[i.length-1]);
        //System.out.println("陣列是:"+Arrays.toString(i)+"最大值是:"+i[i.length-1]);也能正確輸出
    }

    public static String arryToString(Integer[] i){
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for (int x=0;x<i.length;x++){
            if(x!=i.length-1)
                sb.append(i[x]+",");
            else
                sb.append(i[x]);
        }
        sb.append("]");
        return sb.toString();
    }
}

寫了一個tostring方法把陣列轉換成字串
為啥用stringbuilder不用string,回顧了一下原來是string不能修改,想要定義一個能修改的字串就定義成stringbuffer或者stringbuilder型別,但是單執行緒用stringbuilder比較好,速度比較快,它沒有執行緒安全。
陣列型別沒有tostring方法嗎,為啥非要寫一個,而最後sb卻有tostring方法
原來直接i.tostring輸出的是地址值,但是可以用Arrays.toString也能正確輸出。練一下反正也行吧哈哈哈哈大可不必。

相關文章