程序媛在公司的進(jìn)修之路(二)

第二周仍然是學(xué)習(xí),任務(wù)如下:
1.java基礎(chǔ)知識(shí)回顧:java編程思想7-15章智绸,并用面向?qū)ο蟮乃枷肽M漢諾塔游戲
(1)初始時(shí)盤(pán)子數(shù)量
(2)每一步輸入:從塔x 移動(dòng)到塔y 决记,并判斷是否可以進(jìn)行移動(dòng)。
(3)移動(dòng)后打印當(dāng)前各個(gè)塔的盤(pán)子狀態(tài)
2.學(xué)習(xí)java8:函數(shù)接口桐汤,stream垢夹,lambda等特性溢吻,并利用新特性完成以下題目:
(1)輸入姓名后,使用接口隨機(jī)初始用戶User類果元,包括性別促王,年齡
(2)對(duì)男性按年齡升序排序輸出,對(duì)女性按年齡降序排序輸出而晒。
(3)設(shè)計(jì)實(shí)驗(yàn)蝇狼,對(duì)比傳統(tǒng)方法與stream性能差異
當(dāng)時(shí)看到任務(wù),內(nèi)心是崩潰的倡怎,7-16章是什么鬼迅耘,上周還是200頁(yè)的讀書(shū)量,這周就變成了都讀完监署。讀書(shū)量增加了3倍不止......颤专,再加上上周看的基本都是基本語(yǔ)法,都是大家最熟悉的焦匈,后面的難度增強(qiáng)血公,意味著需要更長(zhǎng)時(shí)間去消化......,內(nèi)心壓力劇增缓熟,不過(guò)經(jīng)過(guò)周一一天的調(diào)整,心態(tài)就過(guò)來(lái)了摔笤,有壓力才有動(dòng)力嘛够滑。
這一周自己的安排如下:
周一 閱讀第七、八章
周二 閱讀第九章吕世,完成漢諾塔問(wèn)題
周三 閱讀第十彰触、十一章,了解JAVA8新特性
周四 閱讀第十二命辖、十三章况毅,完成JAVA8題目
周五 閱讀第十四分蓖、十五章,總結(jié)匯報(bào)
不要問(wèn)我每天怎么完成的尔许,每天七點(diǎn)起床么鹤,八點(diǎn)坐在工位開(kāi)始學(xué)習(xí)(別人都是九點(diǎn)半慢悠悠過(guò)來(lái)吃早餐,淚奔)味廊,晚上固定學(xué)習(xí)到十點(diǎn)蒸甜,收拾休息一個(gè)小時(shí),十一點(diǎn)準(zhǔn)時(shí)睡覺(jué)(不過(guò)作息是真的規(guī)律了)余佛。
下午匯報(bào)柠新,照例是部門(mén)老大、師傅和幾個(gè)同事圍觀辉巡,問(wèn)了幾個(gè)問(wèn)題恨憎,一臉懵懂,但勉強(qiáng)在師傅的幫助下過(guò)關(guān)郊楣。最后的最后框咙,沒(méi)想到老大說(shuō):來(lái)看代碼吧!(內(nèi)心:......因?yàn)樽约簩?xiě)代碼就是給自己看奔著實(shí)現(xiàn)功能去的痢甘。)結(jié)果被老大從頭委婉的說(shuō)到尾:
為什么沒(méi)有注釋喇嘱?
為什么類和方法不聲明為public,你這樣讓別人怎么調(diào)用你的包塞栅?
怎么有的地方還有空行者铜?
還犯了個(gè)String比較的傻帽問(wèn)題......字符串比較你怎么用“==”?
你把stream流寫(xiě)這么長(zhǎng)也不換行放椰,讓別人怎么看....師傅忙說(shuō):按Ctrl+A作烟,Ctrl+Shift+F。結(jié)果悲催......不管用砾医。機(jī)智的師傅說(shuō):哦拿撩,你的快捷鍵被搜狗輸入法占用了。(回去趕緊就把占用鍵改了回來(lái).......)
總之如蚜,給我的感覺(jué)就是压恒,大佬們把代碼都是當(dāng)做藝術(shù)品進(jìn)行雕琢的,不是我這種渣渣只是為了實(shí)現(xiàn)功能而寫(xiě)的不堪入目的東西错邦。

最后把我的不堪入目的代碼放上來(lái)給大家嘲笑一下探赫。
漢諾塔問(wèn)題(實(shí)現(xiàn)個(gè)漢諾塔小游戲):

class Plate {
    private int size;
    Plate(int size) {
        this.size = size;
    }
    int getSize () {
        return this.size;
    }
}
class Tower {
    private Stack<Plate> stack;
    private int length=0;

    Tower(){
        this.stack = new Stack<>();
    }
    
    int getLength(){
        return length;
    }

    Plate popPlate () {
        if(length==0){return null;}
        else{length--;return this.stack.pop();}
    }

    void pushPlate(Plate plate) {
        this.stack.push(plate);
        length++;
    }

    Plate peekPlate() {
        return this.stack.peek();
    }

    boolean towerIsEmpty() {
        return this.stack.empty();
    }
    
    Plate[] printTower(){
        if(length==0) return null;
        else{
        Plate[] p=new Plate[length];
        int i=0;
        while(!towerIsEmpty()){
            p[i]=this.stack.pop();
            i++;
        }
        i--;
        while(i!=0){
             this.stack.push(p[i]);
             i--;
        }
        this.stack.push(p[i]);
        return p;}
    }
}
public class MyHanoi {
    static void printTowers(Tower[] t){
        for(int i=0;i<3;i++){
            System.out.print("塔"+i+"的狀態(tài):");
            if(t[i].printTower()==null) System.out.println("空");
            else{
                Plate[] p=t[i].printTower();
                for(int j=0;j<p.length;j++){
                    System.out.print(" "+p[j].getSize());
                    }
                System.out.println();
                }   
        }
    }
     static void move(Tower from ,Tower to) {
         if(from.towerIsEmpty()) System.out.println("您的移動(dòng)不符合要求");
         else{
             if (to.towerIsEmpty() || from.peekPlate().getSize() < to.peekPlate().getSize()) {
                    to.pushPlate(from.popPlate());
                } else {
                    System.out.println("您的移動(dòng)不符合要求");
                }
         }
    }
    public static void main(String args[]){
        System.out.print("游戲開(kāi)始,請(qǐng)輸入盤(pán)子的數(shù)量:");
        Scanner in=new Scanner(System.in);
        int plateNum=in.nextInt();
        Plate[] plate=new Plate[plateNum];
        for(int i=0;i<plateNum;i++){
            plate[i]=new Plate(i);
        }
        Tower[] towers = new Tower[3];
        for (int i = 0; i < 3; i++){
            towers[i] = new Tower();
        }
        for (int i = 1; i <= plateNum; i++) { 
            towers[0].pushPlate(plate[plateNum-i]);
        }
        System.out.println("游戲初始狀態(tài)撬呢,默認(rèn)從塔頂部到塔底部顯示");
        printTowers(towers);
        System.out.println("游戲開(kāi)始伦吠,請(qǐng)輸入移動(dòng)過(guò)程(例:將盤(pán)子從塔0移動(dòng)到塔2,請(qǐng)輸入:0 2):");
        while(towers[2].getLength()!=plateNum){
            int fromTower=in.nextInt();
            int toTower=in.nextInt();
            move(towers[fromTower],towers[toTower]);
            printTowers(towers);
            
        }
        System.out.println("恭喜你完成游戲!");
    }
}

JAVA8題目:

import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.function.Supplier;
import java.util.stream.*;

class User {
    private String[] s = { "Male", "Female" };
    private final int sexIndex = new Random().nextInt(2);
    private String sex = s[sexIndex];
    private final int age = new Random().nextInt(100);
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public static User create(final Supplier<User> supplier, String name) {
        User user = supplier.get();
        user.setName(name);
        return user;
    }

    public String getSex() {
        return this.sex;
    }

    public int getAge() {
        return this.age;
    }

    public String getName() {
        return this.name;
    }
}

public class MyUserDemo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<User> users = Arrays
                .asList(User.create(User::new, "Lily"),
                        User.create(User::new, "Lisa"),
                        User.create(User::new, "Tom"),
                        User.create(User::new, "Linda"),
                        User.create(User::new, "Joan"),
                        User.create(User::new, "Nike"),
                        User.create(User::new, "Betty"),
                        User.create(User::new, "Jelly"),
                        User.create(User::new, "Jerry"),
                        User.create(User::new, "Jane"));
        List<Integer> sortedMale = users.stream()
                .filter(user -> user.getSex().equals("Male"))
                .sorted((o1, o2) -> o1.getAge() - o2.getAge())
                .map(User::getAge).collect(Collectors.toList());
        System.out.println("男性按年齡升序排序輸出:" + sortedMale);
        List<Integer> sortedFemale = users.stream()
                .filter(user -> user.getSex().equals("Female"))
                .sorted((o1, o2) -> o2.getAge() - o1.getAge())
                .map(User::getAge).collect(Collectors.toList());
        System.out.println("女性按年齡降序排序輸出:" + sortedFemale);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市毛仪,隨后出現(xiàn)的幾起案子搁嗓,更是在濱河造成了極大的恐慌,老刑警劉巖箱靴,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腺逛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡刨晴,警方通過(guò)查閱死者的電腦和手機(jī)屉来,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狈癞,“玉大人茄靠,你說(shuō)我怎么就攤上這事〉埃” “怎么了慨绳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)真竖。 經(jīng)常有香客問(wèn)我脐雪,道長(zhǎng),這世上最難降的妖魔是什么恢共? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任战秋,我火速辦了婚禮,結(jié)果婚禮上讨韭,老公的妹妹穿的比我還像新娘脂信。我一直安慰自己,他們只是感情好透硝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布狰闪。 她就那樣靜靜地躺著,像睡著了一般濒生。 火紅的嫁衣襯著肌膚如雪埋泵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天罪治,我揣著相機(jī)與錄音丽声,去河邊找鬼。 笑死规阀,一個(gè)胖子當(dāng)著我的面吹牛恒序,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谁撼,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了厉碟?” 一聲冷哼從身側(cè)響起喊巍,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箍鼓,沒(méi)想到半個(gè)月后崭参,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡款咖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年何暮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铐殃。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡海洼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出富腊,到底是詐尸還是另有隱情坏逢,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布赘被,位于F島的核電站是整,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏民假。R本人自食惡果不足惜浮入,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望羊异。 院中可真熱鬧事秀,春花似錦、人聲如沸球化。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)筒愚。三九已至赴蝇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巢掺,已是汗流浹背句伶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陆淀,地道東北人考余。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轧苫,于是被迫代替她去往敵國(guó)和親楚堤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 沒(méi)錯(cuò),我是一個(gè)程序媛身冬,明明可以靠顏值卻偏偏想靠實(shí)力的程序媛衅胀。想通過(guò)自己的專業(yè)在互聯(lián)網(wǎng)公司占有一席之地。非名校出身酥筝,...
    小芹菜_4d69閱讀 252評(píng)論 0 1
  • Streams 原文鏈接: Streams 原文作者: shekhargulati 譯者: leege100 狀態(tài)...
    忽來(lái)閱讀 5,526評(píng)論 3 32
  • 剛起來(lái)滚躯,起來(lái)不過(guò)十分鐘。 在回憶夢(mèng)里的事嘿歌,于是便想記錄下來(lái)掸掏。 夢(mèng)里,是我高中畢業(yè)那一天 我在食堂門(mén)前宙帝,教學(xué)樓下丧凤,走...
    世界欠我一雙47碼的鞋子閱讀 109評(píng)論 0 0
  • 很高興認(rèn)識(shí)大家。噢耶~
    嘛玩意龐大師啊閱讀 229評(píng)論 13 2
  • 放假有時(shí)間就多畫(huà)一點(diǎn)茄唐,免得下次沒(méi)時(shí)間畫(huà)息裸。修修改改,畫(huà)了四個(gè)小時(shí)沪编。 我畫(huà)的2.0版走形得歷害呼盆,無(wú)力回天,所以補(bǔ)了個(gè)1...
    Blue__Ocean閱讀 120評(píng)論 3 0