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前