java——集合、泛型、ArrayList、LinkedList、foreach循環、模擬ktv點歌系統


集合:一系列特殊的類,這些類可以存儲任意類型的對象,長度可變,集合類都在java.util包中。

  但是集合記不住對象的類型,當把對象從集合中取出時這個對象的編譯類型就變成了Object類型。這樣在取元素的時候,如果進行強制類型轉換就會很容易出錯。

  為解決這個問題,在java中引入“參數化類型”,即泛型

泛型:

  不能存放基本數據類型

ArrayList<String> list = new ArrayList<String>();

 

ArrayList:底層使用數組來保存元素,增加和刪除會創建新的數組,因而導致效率低,但索引方式訪問元素使得使用ArrayList集合查找元素很方便。

LinkedList:底層使用雙向循環鏈表,使得增刪操作效率高。

Iterator:迭代器

foreach循環:增強for循環,類似Python的for循環,但是這種方式只能訪問集合中的元素,不能改變元素

模擬ktv點歌系統:

import java.util.*;
public class exp{
    public static void main(String[] args){
            System.out.println("~~~~~~超豪華點歌系統~~~~~~");
            System.out.println("輸入0添加歌曲");
            System.out.println("輸入1歌曲置頂");
            System.out.println("輸入2將所選歌曲提前");
            System.out.println("輸入3退出系統");
            LinkedList list = new LinkedList();
            initMusic(list);
            printList(list);
            while(true) {
                System.out.println("請輸入要執行的操作號碼:");
                Scanner scan = new Scanner(System.in);
                int command = scan.nextInt();
                switch (command){
                    case 0:
                        addMusic(list);
                        printList(list);
                        break;
                    case 1:
                        topMusic(list);
                        printList(list);
                        break;
                    case 2:
                        beforeMusic(list);
                        printList(list);
                        break;
                    case 3:
                        exitSystem();
                        // 跳出switch,並沒有跳出while
                        break;
                    default:
                        System.out.println("輸入號碼有誤,請重新輸入:");
                        break;
                }
            }
    }
    private static void initMusic(LinkedList list){
        list.add("稻香");
        list.add("最炫民族風");
    }
    // 1 add music
    private static void addMusic(LinkedList list){
        System.out.println("請輸入要增加的歌曲名:");
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        list.add(str);
    }
    // 2 top music
    private static void topMusic(LinkedList list){
        System.out.println("請輸入要置頂的歌曲名:");
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        int index = list.indexOf(str);
        if(index < 0){
            System.out.println("當前列表沒有這首歌哦~");
        }else{
            list.remove(str);
            list.addFirst(str);
        }
            System.out.println("已經將歌曲置頂了哦~");
            System.out.println("看下新列表嘛~");
        
    }
    //set music before
    private static void beforeMusic(LinkedList list){
        System.out.println("請輸入要置前的歌曲名:");
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        int index = list.indexOf(str);
        if(index<0){
            System.out.println("當前列表沒有這首歌哦~");
        }else if(index == 0){
            System.out.println("這首歌已經在最前面啦~");
        }else{
            list.remove(str);
            list.add(index-1, str);
        }
        System.out.println("已經將" + str + "置前了哦~");
    }
    // 3 exit system
    private static void exitSystem(){
        System.out.println("*********感謝您的使用*********");
        System.exit(0);
    }
    // print music list 
    private static void printList(LinkedList list){
        System.out.println("歌曲列表如下:");
        System.out.println("~~~~~~~~~~~~~~~~~~~~~");
        for (Object obj: list){
            System.out.println(obj);    
        }
        System.out.println("*********************");
    }
    
}

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM