1. 程式人生 > >Set集合及其子集合HashSet 、LinkedHashSet、TreeSet;Map集合及其子集合HashMap、Hashtable;Collections(集合工具類);IO概述和異常

Set集合及其子集合HashSet 、LinkedHashSet、TreeSet;Map集合及其子集合HashMap、Hashtable;Collections(集合工具類);IO概述和異常

Set集合

在這裡插入圖片描述 TreeSet的排序例項 需求:儲存自定義物件到TreeSet集合中,並遍歷

 package OBT;

public class Student implements Comparable<Student>{
    String name;
    int age;

    public Student(String name, int age) {
        this.name=name;
        this.age=age;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Student o) {
        int num=this.name.length()-o.name.length();
        int num2=num==0?this.name.compareTo(o.name):num;
        int num3=num2==0?this.age-o.age:num2;
        return num3;
    }
}

自然排序

package OBT;
import java.util.TreeSet;
public class Treeziran {
    public static void main(String[] args) {
        Student s1=new Student ("張三",45);
        Student s2=new Student ("李四",34);
        Student s3=new Student ("王五",33);
        TreeSet <Student> tree=new TreeSet<>();
        tree.add(s1);
        tree.add(s2);
        tree.add(s3);
        for(Student stu:tree){
            System.out.println (stu);
        }
    }
}

比較器排序

package OBT;

import java.util.TreeSet;

public class Treebj {
    public static void main(String[] args) {
        Student s1 = new Student ("張三", 45);
        Student s2 = new Student ("李四", 34);
        Student s3 = new Student ("王五", 33);
        TreeSet<Student> tree = new TreeSet<> ();
        tree.add (s1);
        tree.add (s2);
        tree.add (s3);
        for(Student stu:tree){
            System.out.println (stu);
        }
    }
}

Map集合

在這裡插入圖片描述 HashMap集合的遍歷例項 需求:儲存自定義物件到TreeMap集合中,並採用兩種方式遍歷

4、package OBT;

class person{
    String name1;
    String name2;

    public person(String name1, String name2) {
        this.name1 = name1;
        this.name2 = name2;
    }

    public String getName1() {
        return name1;
    }

    public String getName2() {
        return name2;
    }

    @Override
    public String toString() {
        return "person{" +
                "name1='" + name1 + '\'' +
                ", name2='" + name2 + '\'' +
                '}';
    }
}

package OBT;

import java.util.Comparator; import java.util.Map; import java.util.Set; import java.util.TreeMap;

public class hash { public static void main(String[] args) { TreeMap<person, String> m = new TreeMap<> (new Comparator () {

        @Override
        public int compare(person o1, person o2) {
            int num = o1.getName1 ().compareTo (o2.getName1 ());
            int num2=num==0?o1.getName2 ().compareTo (o2.getName2 ()):num;
            return num2;
        }

    });

    m.put ( new person ("大大","小小"),"s001");
    m.put ( new person ("郭靖","黃蓉"),"s002");
    m.put ( new person ("高高","矮矮"),"s003");
    Set<Map.Entry<person, String>> es = m.entrySet();
    for(Map.Entry<person, String> s:es) {
        System.out.println(s.getKey()+"==="+s.getValue());
    }
    System.out.println("------------------------------");
    Set<person> keySet = m.keySet();
    for(person s1:keySet) {
        System.out.println(s1+"=="+m.get(s1));
    }
}

}

Map介面和Collection介面的區別 (1)Map是雙列的,Collection是單列的 (2)Map的鍵唯一,Collection的子體系Set是唯一的 (3)Map集合的資料結構針對鍵有效,跟值無關;Collection集合的資料結構是針對元素有效 HashMap和Hashtable的區別 (1)HashMap: 執行緒不安全,效率高.允許null值和null鍵 (2)Hashtable: 執行緒安全 , 效率低.不允許null值和null鍵

Collections(集合工具類)

在這裡插入圖片描述

IO概述和異常

在這裡插入圖片描述 final,finally和finalize的區別 final: 是一個狀態修飾符, 可以用來修飾類 , 變數 , 成員方法 ;被修飾的類不能被子類繼承, 修飾的變數其實是一個常量不能被再次賦值;修飾的方法不能被子類重寫 finally:用在try…catch…語句中 , 作用: 釋放資源 . 特點: 始終被執行(JVM不能退出) finalize: Obejct類中的一個方法,用來回收垃圾 問題 如果catch裡面有return語句,請問finally的程式碼還會執行嗎?如果會,請問是在return前還是return後。 答:會執行, 在return前