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("*********************");
    }
    
}

  

原文地址:https://www.cnblogs.com/gaoquanquan/p/9608604.html