Java基礎(chǔ)知識點(九)

一邀摆、Java 中的集合框架(上)

1腻格、Java 中的集合框架概述


JAVA集合框架體系結(jié)構(gòu):Collection與Map是兩個根接口诊赊。

Collection接口:內(nèi)部存儲的是一個個獨立的對象匹颤。包含:
  • 1仅孩、List接口:序列,存儲元素排列有序且可重復印蓖。實現(xiàn)類:ArrayList辽慕,數(shù)組序列。實現(xiàn)類:LinkedList赦肃,鏈表溅蛉。
  • 2、Queue接口:隊列他宛,存儲元素排列有序且可重復温艇。實現(xiàn)類:LinkedList,鏈表堕汞。
  • 3勺爱、Set接口:集,存儲元素無序且不可重復讯检。實現(xiàn)類:HashSet琐鲁,哈希集。
Map接口:
  • 內(nèi)部以<Key,Value>兩個對象(任意類型)為一個映射去存儲數(shù)據(jù)人灼,這一個映射就是Entry類(Map的內(nèi)部類)的實例围段。包括:實現(xiàn)類:HashMap,哈希表投放。


2奈泪、Collection 接口 & List 接口簡介


3 、學生選課--創(chuàng)建學生類和課程類

package com.imooc.collection;

/**
 * 課程類
 * @author Administrator
 *
 */
public class Course {

    public String id;
    
    public String name;
    
    public Course(String id, String name) {
        this.id = id ;
        
        this.name = name;
    }
    
    public Course() {
        
    }
}

package com.imooc.collection;

import java.util.HashSet;
import java.util.Set;

/**
 * 學生類
 * @author Administrator
 *
 */
public class Student {

    public String id;
    
    public String name;
    
    public Set<Course> courses;

    public Student(String id, String name) {
        this.id = id;
        this.name = name;
        this.courses = new HashSet<Course>();
    }
}

4灸芳、學生選課

  • 添加課程

  • 課程查詢

  • 課程修改

  • 課程刪除

package com.imooc.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * 備選課程類
 * @author Administrator
 *
 */
public class ListTest {

    /**
     * 用于存放備選課程的List
     */
    public List coursesToSelect;
    
    public ListTest() {
        this.coursesToSelect = new ArrayList();
    }
    
    /**
     * 用于往coursesToSelect中添加備選課程
     */
    public void testAdd() {
        //創(chuàng)建一個課程對象涝桅,并通過調(diào)用add方法,添加到備選課程List中
        Course cr1 = new Course("1" , "數(shù)據(jù)結(jié)構(gòu)");
        coursesToSelect.add(cr1);
        Course temp = (Course) coursesToSelect.get(0);
        System.out.println("添加了課程:" + temp.id + ":" + temp.name); 
        
        Course cr2 = new Course("2", "C語言");
        coursesToSelect.add(0, cr2);
        Course temp2 = (Course) coursesToSelect.get(0);
        System.out.println("添加了課程:" + temp2.id + ":" + temp2.name);
        
        coursesToSelect.add(cr1);
        Course temp0 = (Course) coursesToSelect.get(2);
        System.out.println("添加了課程:" + temp.id + ":" + temp.name); 
        
        
        //以下方法會拋出數(shù)組下標越界異常
//      Course cr3 = new Course("3", "test");
//      coursesToSelect.add(4, cr3);
        
        Course[] course = {new Course("3", "離散數(shù)學"), new Course("4", "匯編語言")};
        coursesToSelect.addAll(Arrays.asList(course));
        Course temp3 = (Course) coursesToSelect.get(2);
        Course temp4 = (Course) coursesToSelect.get(3);
        
        System.out.println("添加了兩門課程:" + temp3.id + ":" + 
                temp3.name + ";" + temp4.id + ":" + temp4.name);
        
        Course[] course2 = {new Course("5", "高等數(shù)學"), new Course("6", "大學英語")};
        coursesToSelect.addAll(2, Arrays.asList(course2));
        Course temp5 = (Course) coursesToSelect.get(2);
        Course temp6 = (Course) coursesToSelect.get(3);
        System.out.println("添加了兩門課程:" + temp5.id + ":" + 
                temp5.name + ";" + temp6.id + ":" + temp6.name);
        
    }
    
    /**
     * 取得List中的元素的方法
     * @param args
     */
    public void testGet() {
        int size = coursesToSelect.size();
        System.out.println("有如下課程待選:");
        for(int i= 0 ; i < size; i++) {
            Course cr = (Course) coursesToSelect.get(i);
            System.out.println("課程:" + cr.id + ":" + cr.name);
        }
    }
    
    /**
     * 通過迭代器來遍歷List
     * @param args
     */
    public void testIterator() {
        //通過集合的iterator方法烙样,取得迭代器的實例
        Iterator<Course> it = coursesToSelect.iterator();
        System.out.println("有如下課程待選(通過迭代器訪問):");
        while(it.hasNext()) {
            Course cr = it.next();
            System.out.println("課程:" + cr.id + ":" + cr.name);
        }
    }
    
    /**
     * 通過for each方法訪問集合元素
     * @param args
     */
    public void testForEach() {
        System.out.println("有如下課程待選(通過for each訪問):");
        for (Object obj : coursesToSelect) {
            Course cr = (Course) obj;
            System.out.println("課程:" + cr.id + ":" + cr.name);
        }
    }
    
    /**
     * 修改List中的元素
     * @param args
     */
    public void testModify() {
        coursesToSelect.set(4, new Course("7", "毛概"));
    }
    
    /**
     * 刪除List中的元素
     * @param args
     */
    public void testRemove() {
//      Course cr = (Course) coursesToSelect.get(4);
        System.out.println("即將刪除4位置和5位置上的課程冯遂!");
        Course[] courses = {(Course) coursesToSelect.get(4), (Course) coursesToSelect.get(5)};
        coursesToSelect.removeAll(Arrays.asList(courses));
        //      coursesToSelect.remove(4);
        System.out.println("成功刪除課程!");
        testForEach();
    }
    
    /**
     * 往List中添加一些奇怪的東西
     * @param args
     */
    public void testType() {
        System.out.println("能否往List中添加一些奇怪的東西呢Z嘶瘛蛤肌?");
        coursesToSelect.add("我不是課程壁却,我只是一個無辜的字符串!裸准!");
    }
    
    public static void main( String[] args) {
        ListTest lt = new ListTest();
        lt.testAdd();
        lt.testType();
        lt.testForEach();
//      lt.testGet();
//      lt.testIterator();
//      lt.testForEach();
//      lt.testModify();
//      lt.testForEach();
//      lt.testRemove();
    }
}

5展东、學生選課----應(yīng)用泛型管理課程

package com.imooc.collection;

import java.util.ArrayList;
import java.util.List;

public class TestGeneric {

    /**
     * 帶有泛型——Course,的List類型屬性
     */
    public List<Course> courses;
    
    public TestGeneric() {
        this.courses = new ArrayList<Course>();
    }
    
    /**
     * 測試添加
     */
    public void testAdd() {
        Course cr1 = new Course("1","大學語文");
        courses.add(cr1);
        //泛型集合中炒俱,不能添加泛型規(guī)定的類型及其子類型以外的對象琅锻,否則會報錯!
//      courses.add("能否添加一些奇怪的東西呢向胡?恼蓬?");
        Course cr2 = new Course("2","Java基礎(chǔ)");
        courses.add(cr2);
    }
    
    /**
     * 測試循環(huán)遍歷
     */
    public void testForEach() {
        for (Course cr : courses) {
            System.out.println(cr.id + ":" + cr.name);
        }
    }
    
    /**
     * 泛型集合可以添加泛型的子類型的對象實例
     */
    public void testChild() {
        ChildCourse ccr = new ChildCourse();
        ccr.id = "3";
        ccr.name = "我是子類型的課程對象實例~~";
        courses.add(ccr);
    }
    
    /**
     * 泛型不能使用基本類型
     */
    public void testBasicType() {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        System.out.println("基本類型必須使用包裝類作為泛型!" + list.get(0));
    }
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        TestGeneric tg = new TestGeneric();
        tg.testAdd();
        tg.testForEach();
        tg.testChild();
        tg.testForEach();
        tg.testBasicType();
    }

}

package com.imooc.collection;

public class ChildCourse extends Course {

}

1.泛型集合中不能使用基本數(shù)據(jù)類型List<int>course僵芹。必須為引用類型List<Course> course
2.可以通過使用包裝類限定允許存入的基本數(shù)據(jù)類型处硬。

6、學生選課----通過 Set 集合管理課程


Set接口及其實現(xiàn)類——HashSet

  • Set是元素無序并且不可以重復的集合拇派,被稱為集荷辕;

HashSet——哈希集,是Set的一個重要實現(xiàn)類

  • 1件豌、Set沒有像List中set()方法一樣就修改疮方,因為List是有序的,可以指定位置茧彤,而Set是無序的骡显。

  • 2、查詢遍歷時曾掂,Set不能用get()方法去獲取惫谤,因為無序沒有指定索引ID,但可以使用foreach和iterator來遍歷珠洗,但是每次遍歷出來可能順序都不一樣溜歪,還是因為無序造成的。

  • 3许蓖、Set中的size(),add(),addAll(),remove(),removeAll()與List類似蝴猪。

  • 4、Set還可以添加null膊爪;無序演示

package com.imooc.collection;

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

public class SetTest {

    public List<Course> coursesToSelect;

    public SetTest() {
        coursesToSelect = new ArrayList<Course>();
    }

    /**
     * 用于往coursesToSelect中添加備選課程
     */
    public void testAdd() {
        // 創(chuàng)建一個課程對象自阱,并通過調(diào)用add方法,添加到備選課程List中
        Course cr1 = new Course("1", "數(shù)據(jù)結(jié)構(gòu)");
        coursesToSelect.add(cr1);
        Course temp = (Course) coursesToSelect.get(0);
        // System.out.println("添加了課程:" + temp.id + ":" + temp.name);

        Course cr2 = new Course("2", "C語言");
        coursesToSelect.add(0, cr2);
        Course temp2 = (Course) coursesToSelect.get(0);
        // System.out.println("添加了課程:" + temp2.id + ":" + temp2.name);

        // coursesToSelect.add(cr1);
        // Course temp0 = (Course) coursesToSelect.get(2);
        // System.out.println("添加了課程:" + temp.id + ":" + temp.name);

        // 以下方法會拋出數(shù)組下標越界異常
        // Course cr3 = new Course("3", "test");
        // coursesToSelect.add(4, cr3);

        Course[] course = { new Course("3", "離散數(shù)學"), new Course("4", "匯編語言") };
        coursesToSelect.addAll(Arrays.asList(course));
        Course temp3 = (Course) coursesToSelect.get(2);
        Course temp4 = (Course) coursesToSelect.get(3);

        // System.out.println("添加了兩門課程:" + temp3.id + ":" +
        // temp3.name + ";" + temp4.id + ":" + temp4.name);

        Course[] course2 = { new Course("5", "高等數(shù)學"), new Course("6", "大學英語") };
        coursesToSelect.addAll(2, Arrays.asList(course2));
        Course temp5 = (Course) coursesToSelect.get(2);
        Course temp6 = (Course) coursesToSelect.get(3);
        // System.out.println("添加了兩門課程:" + temp5.id + ":" +
        // temp5.name + ";" + temp6.id + ":" + temp6.name);

    }

    /**
     * 通過for each方法訪問集合元素
     * 
     * @param args
     */
    public void testForEach() {
        System.out.println("有如下課程待選(通過for each訪問):");
        for (Object obj : coursesToSelect) {
            Course cr = (Course) obj;
            System.out.println("課程:" + cr.id + ":" + cr.name);
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        SetTest st = new SetTest();
        st.testAdd();
        st.testForEach();
        // 創(chuàng)建一個學生對象
        Student student = new Student("1", "小明");
        System.out.println("歡迎學生:" + student.name + "選課蚁飒!");
        // 創(chuàng)建一個Scanner對象动壤,用來接收從鍵盤輸入的課程ID
        Scanner console = new Scanner(System.in);

        for (int i = 0; i < 3; i++) {
            System.out.println("請輸入課程ID");
            String courseId = console.next();
            for (Course cr : st.coursesToSelect) {
                if (cr.id.equals(courseId)) {
                    student.courses.add(cr);
                    /**
                     * Set中萝喘,添加某個對象淮逻,無論添加多少次琼懊, 最終只會保留一個該對象(的引用), 并且爬早,保留的是第一次添加的那一個
                     */
                    // student.courses.add(null);
                    student.courses.add(cr);
                }
            }
        }
        st.testForEachForSet(student);
    }

    public void testForEachForSet(Student student) {
        // 打印輸出哼丈,學生所選的課程!
        System.out.println("共選擇了:" + student.courses.size() + "門課程筛严!");
        for (Course cr : student.courses) {
            System.out.println("選擇了課程:" + cr.id + ":" + cr.name);
        }
    }

}

二醉旦、Java 中的集合框架(中)

1、Map & HashMap 簡介




2桨啃、學生選課

  • 使用 Map 添加學生

  • 刪除 Map 中的學生

  • 修改 Map 中的學生

  • 判斷 List 中課程是否存在

  • 判斷 Set 中課程是否存在

  • 獲取 List 中課程的位置

  • 判斷 Map


package com.imooc.collection;

/**
 * 課程類
 * @author Administrator
 *
 */
public class Course {

    public String id;
    
    public String name;
    
    public Course(String id, String name) {
        this.id = id ;
        
        this.name = name;
    }
    
    public Course() {
        
    }
}

package com.imooc.collection;

import java.util.HashSet;
import java.util.Set;

/**
 * 學生類
 * @author Administrator
 *
 */
public class Student {

    public String id;
    
    public String name;
    
    public Set<Course> courses;

    public Student(String id, String name) {
        this.id = id;
        this.name = name;
        this.courses = new HashSet<Course>();
    }
}

package com.imooc.collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class MapTest {

    /**
     * 用來承裝學生類型對象
     */
    public Map<String, Student> students;

    /**
     * 在構(gòu)造器中初始化students屬性
     */
    public MapTest() {
        this.students = new HashMap<String, Student>();
    }

    /**
     * 測試添加:輸入學生ID车胡,判斷是否被占用 若未被占用,則輸入姓名照瘾,創(chuàng)建新學生對象匈棘,并且 添加到students中
     */
    public void testPut() {
        // 創(chuàng)建一個Scanner對象,用來獲取輸入的學生ID和姓名
        Scanner console = new Scanner(System.in);
        int i = 0;
        while (i < 3) {
            System.out.println("請輸入學生ID:");
            String ID = console.next();
            // 判斷該ID是否被占用
            Student st = students.get(ID);
            if (st == null) {
                // 提示輸入學生姓名
                System.out.println("請輸入學生姓名:");
                String name = console.next();
                // 創(chuàng)建新的學生對象
                Student newStudent = new Student(ID, name);
                // 通過調(diào)用students的put方法析命,添加ID-學生映射
                students.put(ID, newStudent);
                System.out.println("成功添加學生:" + students.get(ID).name);
                i++;
            } else {
                System.out.println("該學生ID已被占用主卫!");
                continue;
            }
        }
    }

    /**
     * 測試Map的keySet方法
     */
    public void testKeySet() {
        // 通過keySet方法,返回Map中的所有“鍵”的Set集合
        Set<String> keySet = students.keySet();
        // 取得students的容量
        System.out.println("總共有:" + students.size() + "個學生鹃愤!");
        // 遍歷keySet簇搅,取得每一個鍵,再調(diào)用get方法取得每個鍵對應(yīng)的value
        for (String stuId : keySet) {
            Student st = students.get(stuId);
            if (st != null)
                System.out.println("學生:" + st.name);
        }
    }

    /**
     * 測試刪除Map中的映射
     */
    public void testRemove() {
        // 獲取從鍵盤輸入的待刪除學生ID字符串
        Scanner console = new Scanner(System.in);
        while (true) {
            // 提示輸入待刪除的學生的ID
            System.out.println("請輸入要刪除的學生ID软吐!");
            String ID = console.next();
            // 判斷該ID是否有對應(yīng)的學生對象
            Student st = students.get(ID);
            if (st == null) {
                // 提示輸入的ID并不存在
                System.out.println("該ID不存在瘩将!");
                continue;
            }
            students.remove(ID);
            System.out.println("成功刪除學生:" + st.name);
            break;
        }
    }

    /**
     * 通過entrySet方法來遍歷Map
     */
    public void testEntrySet() {
        // 通過entrySet方法,返回Map中的所有鍵值對
        Set<Entry<String, Student>> entrySet = students.entrySet();
        for (Entry<String, Student> entry : entrySet) {
            System.out.println("取得鍵:" + entry.getKey());
            System.out.println("對應(yīng)的值為:" + entry.getValue().name);
        }
    }

    /**
     * 利用put方法修改Map中的已有映射
     */
    public void testModify() {
        // 提示輸入要修改的學生ID
        System.out.println("請輸入要修改的學生ID:");
        // 創(chuàng)建一個Scanner對象凹耙,去獲取從鍵盤上輸入的學生ID字符串
        Scanner console = new Scanner(System.in);
        while (true) {
            // 取得從鍵盤輸入的學生ID
            String stuID = console.next();
            // 從students中查找該學生ID對應(yīng)的學生對象
            Student student = students.get(stuID);
            if (student == null) {
                System.out.println("該ID不存在鸟蟹!請重新輸入!");
                continue;
            }
            // 提示當前對應(yīng)的學生對象的姓名
            System.out.println("當前該學生ID使兔,所對應(yīng)的學生為:" + student.name);
            // 提示輸入新的學生姓名建钥,來修改已有的映射
            System.out.println("請輸入新的學生姓名:");
            String name = console.next();
            Student newStudent = new Student(stuID, name);
            students.put(stuID, newStudent);
            System.out.println("修改成功!");
            break;
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        MapTest mt = new MapTest();
        mt.testPut();
        mt.testKeySet();
        // mt.testRemove();
        // mt.testEntrySet();
        // mt.testModify();
        // mt.testEntrySet();

    }

}

  • 應(yīng)用 Collections.sort()

-嘗試對學生序列排序

package com.imooc.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * 將要完成:
 * 1.通過Collections.sort()方法虐沥,對Integer泛型的List進行排序熊经;
 * 2.對String泛型的List進行排序;
 * 3.對其他類型泛型的List進行排序欲险,以Student為例镐依。
 */
public class CollectionsTest {

    /**
     * 1.通過Collections.sort()方法,對Integer泛型的List進行排序天试;
     * 創(chuàng)建一個Integer泛型的List槐壳,插入十個100以內(nèi)的不重復隨機整數(shù),
     * 調(diào)用Collections.sort()方法對其進行排序
     */
    public void testSort1() {
        List<Integer> integerList = new ArrayList<Integer>();
        // 插入十個100以內(nèi)的不重復隨機整數(shù)
        Random random = new Random();
        Integer k;
        for (int i = 0; i < 10; i++) {
            do {
                k = random.nextInt(100);
            } while (integerList.contains(k));
            integerList.add(k);
            System.out.println("成功添加整數(shù):" + k);
        }
        System.out.println("-------------排序前--------------");
        for (Integer integer : integerList) {
            System.out.println("元素:" + integer);
        }
        Collections.sort(integerList);
        System.out.println("----------------排序后-------------------");
        for (Integer integer : integerList) {
            System.out.println("元素:" + integer);
        }
    }
    
    /**
     * 2.對String泛型的List進行排序喜每;
     * 創(chuàng)建String泛型的List务唐,添加三個亂序的String元素雳攘,
     * 調(diào)用sort方法,再次輸出排序后的順序
     */
    public void testSort2() {
        List<String> stringList = new ArrayList<String>();
        stringList.add("microsoft");
        stringList.add("google");
        stringList.add("lenovo");
        System.out.println("------------排序前-------------");
        for (String string : stringList) {
            System.out.println("元素:" + string);
        }
        Collections.sort(stringList);
        System.out.println("--------------排序后---------------");
        for (String string : stringList) {
            System.out.println("元素:" + string);
        }
    }
    
    /**
     * 3.對其他類型泛型的List進行排序枫笛,以Student為例吨灭。
     */
    public void testSort3() {
        List<Student> studentList = new ArrayList<Student>();
        Random random = new Random();
        studentList.add(new Student(random.nextInt(1000) + "", "Mike"));
        studentList.add(new Student(random.nextInt(1000) + "", "Angela"));
        studentList.add(new Student(random.nextInt(1000) + "", "Lucy"));
        studentList.add(new Student(10000 + "", "Beyonce"));
        System.out.println("--------------排序前---------------");
        for (Student student : studentList) {
            System.out.println("學生:" + student.id + ":" + student.name);
        }
        Collections.sort(studentList);
        System.out.println("----------------排序后------------------");
        for (Student student : studentList) {
            System.out.println("學生:" + student.id + ":" + student.name);
        }
        Collections.sort(studentList, new StudentComparator());
        System.out.println("----------------按照姓名排序后-----------------");
        for (Student student : studentList) {
            System.out.println("學生:" + student.id + ":" + student.name);
        }
    }
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        CollectionsTest ct = new CollectionsTest();
//      ct.testSort1();
//      ct.testSort2();
        ct.testSort3();
    }

}

  • Comparable & Comparator



  • 實現(xiàn)學生序列排序


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市刑巧,隨后出現(xiàn)的幾起案子喧兄,更是在濱河造成了極大的恐慌,老刑警劉巖啊楚,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吠冤,死亡現(xiàn)場離奇詭異,居然都是意外死亡恭理,警方通過查閱死者的電腦和手機咨演,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚯斯,“玉大人薄风,你說我怎么就攤上這事∨那叮” “怎么了遭赂?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長横辆。 經(jīng)常有香客問我撇他,道長,這世上最難降的妖魔是什么狈蚤? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任困肩,我火速辦了婚禮,結(jié)果婚禮上脆侮,老公的妹妹穿的比我還像新娘锌畸。我一直安慰自己,他們只是感情好靖避,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布潭枣。 她就那樣靜靜地躺著,像睡著了一般幻捏。 火紅的嫁衣襯著肌膚如雪盆犁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天篡九,我揣著相機與錄音谐岁,去河邊找鬼。 笑死,一個胖子當著我的面吹牛伊佃,可吹牛的內(nèi)容都是我干的窜司。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锭魔,長吁一口氣:“原來是場噩夢啊……” “哼例证!你這毒婦竟也來了路呜?” 一聲冷哼從身側(cè)響起迷捧,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胀葱,沒想到半個月后漠秋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡抵屿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年庆锦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轧葛。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搂抒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尿扯,到底是詐尸還是另有隱情求晶,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布衷笋,位于F島的核電站芳杏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辟宗。R本人自食惡果不足惜爵赵,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泊脐。 院中可真熱鬧空幻,春花似錦、人聲如沸容客。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耘柱。三九已至如捅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間调煎,已是汗流浹背镜遣。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悲关。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓谎僻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寓辱。 傳聞我的和親對象是個殘疾皇子艘绍,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

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