Java筆記

1 Map遍歷

1 這是最常見的并且在大多數(shù)情況下也是最可取的遍歷方式。在鍵值都需要時使用。

Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
for (Map.Entry<Integer, Integer> entry : map.entrySet()) { 
  System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); 
}

2 在for-each循環(huán)中遍歷keys或values。

如果只需要map中的鍵或者值,你可以通過keySet或values來實現(xiàn)遍歷,而不是用entrySet。

Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
//遍歷map中的鍵 
for (Integer key : map.keySet()) { 
  System.out.println("Key = " + key); 
} 
//遍歷map中的值 
for (Integer value : map.values()) { 
  System.out.println("Value = " + value); 
}

該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。

2 Comparator接口

實現(xiàn)Comparator接口并重寫compare方法實現(xiàn)對象排序。

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

public class Debug {
    public static void main(String[] args) {
        List<Dog> list = new ArrayList<>();
        list.add(new Dog("a", 45));
        list.add(new Dog("b", 40));
        list.add(new Dog("c", 90));
        list.add(new Dog("d", 20));
        Collections.sort(list, new Comparator<Dog>() {
            @Override
 //對狗的年齡降序排列
            public int compare(Dog dog1, Dog dog2) {
                return dog2.age - dog1.age;
            }
        });
        for (Dog e : list) {
            System.out.println(e.name + "---" + e.age);
        }
    }
}

3 迭代器

/**
 * 在第一個字符串中刪除在第二個字符串中出現(xiàn)過的所有字符,即在遍歷中刪除集合元素,需要使用Iterator中的remove()方法。
 */

import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;

public class TheIterator {
    public static String func(String str1, String str2) {
        LinkedList<Character> list = new LinkedList<>();
        for (int i = 0; i < str1.length(); i++) {
            list.add(str1.charAt(i));
        }
        HashSet<Character> set = new HashSet<>();
        for (int i = 0; i < str2.length(); i++) {
            set.add(str2.charAt(i));
        }
        Iterator<Character> iterator = list.iterator();
        while (iterator.hasNext()) {
            char c = iterator.next();
            if (set.contains(c)) {
                iterator.remove();
            }
        }
        String res = "";
        for (Character c : list) {
            res += c;
        }
        return res;
    }

    public static void main(String[] args) {
        System.out.println(func("We are students", "aeiou"));
    }
}

4 多態(tài)的好處

提高程序的可擴(kuò)展性

public class DuoTai {
    static class Bird{
        public void moo(){
            System.out.println("bird~~");
        }
    }
    static class Bird1 extends Bird{
        public void moo(){
            System.out.println("bird1111");
        }
    }
    static class Bird2 extends Bird{
        public void moo(){
            System.out.println("bird2222");
        }
    }
    static class Wife{
        public void listen(Bird bird){
            bird.moo();
        }
    }

    public static void main(String[] args) {
        new Wife().listen(new Bird1());
        new Wife().listen(new Bird2());
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,658評論 0 3
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,228評論 0 4
  • 一、集合入門總結(jié) 集合框架: Java中的集合框架大類可分為Collection和Map;兩者的區(qū)別: 1、Col...
    程序員歐陽閱讀 11,816評論 2 61
  • 《Effective Java》筆記(上) 對象的創(chuàng)建與銷毀 Item 1: 使用static工廠方法,而不是構(gòu)造...
    OCNYang閱讀 2,788評論 2 17
  • 2017年5月18日 晴 每個人都有自己的幸運(yùn)數(shù)字,這些年我一直很喜歡518,一方面是因為諧音我要發(fā),一方面...
    東尼日記閱讀 406評論 0 0

友情鏈接更多精彩內(nèi)容