微型電動車或納入摩托車管理範疇 政策或將2016年出臺

據瞭解,工信部、發改委、公安部、環境部等部委已經對微型電動汽車進行調研,通過高標準放行一小部分產品後,其他微型電動車或將納入新的摩托車管理範疇。

中國電動汽車百人會微型電動車課題組組長介紹,通過多次微型電動車發展問題的調研與討論,並形成了相關的政策管理建議方案。他表示,馬凱總理對微型電動車的發展已有批示,要納入正常的機動車管理。

這是一個積極正面的信號,而不是否認微型電動車的存在價值。

在具體的管理標準上,一位從事新能源汽車研究的相關人士告訴記者,目前政策傾向于按照類似歐盟的摩托車歸類管理微型電動車。同時,在歐盟標準之上,按照中國不同城市特色區分管理,比如,在北上廣深等一線城市禁止微型電動車上路,但遠郊區可放開,三四線及以下的城市也可以上路,這就規避了實際管理中的很多矛盾。
 

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

南美洲成立新網站 鼓勵舉報投訴貪污及破壞環境

摘錄自2020年2月20日星島日報報導

三個非政府組織在南美洲成立一個新網站,鼓勵公眾舉報及投訴貪污及破壞環境的行為。由智利民權組織 Ciudadania Inteligente 、美國 Proyecto PODER 組織及西班牙國際巴爾塔薩.加爾松基金會(International Baltasar Garzon Foundation)合力促成。

三個組織發表聲明稱,成立這個網站的目的是提供一個重要工具和途徑,鼓勵公眾舉報不公義的事情和行為,藉以建立更公平的社會,為那些權利和生活都面對危害的拉丁美洲人提供保障。

三個組織指出,過往一些震動拉丁美洲的政治和金錢醜聞,都是因為有人察覺到詐騙和犯罪行為而揭發的,包括涉及巴西大型工程公司 Odebrecht 的醜聞。該公司被指在區內數個國家行賄,獲取大型基建工程合約,涉及款項數以10億美元計。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

特斯拉公布 2015 年第四季暨全年財報,預告 Model 3 車款 3 月 31 日發表

在正式發表 SUV 車款 Model X,並推出自動駕駛模式 Autopilot 之後,受到投資人關注的美國電動車製造商特斯拉(Tesla),10 日公布截至 2015 年 12 月 31 日的第四季暨全年財務報告,並且預告入門級 Model 3 車款將訂於 3 月 31 日發表。

依照美國通用會計準則,特斯拉第四季營收 12.1 億美元,相較去年同期成長 27%,全年營收則是 40.5 億美元(約台幣 1,356.4 億元),相較去年同期成長 27%,毛利率 18%,該季自核心營運項目獲得 1.79 億美元(約台幣 60 億元)的現金流。   雖然第四季與全年的營收有所成長,但是該季特斯拉淨虧損 3.2 億美元(約台幣 107.2 億元),高於去年同期的淨虧損 1.08 億美元,每股虧損 2.44 美元;全年淨虧損則是 8.89 億美元(約台幣 297.7 億元),高於 2014 年的 2.94 億美元,每股虧損 6.93 美元。財報數據顯示特斯拉仍有近 12 億美元(約台幣 401.9 億元)的現金,但是相較 2014 年持有現金 19 億美元,這一年來確實不斷地燒錢。   儘管財報不如預期,特斯拉對於新的一年仍然抱持樂觀。該公司預期 2016 年將能產生現金流,使 2016 年底的現金餘額比 2015 年底有所提高。特斯拉將在設備方面進行投資,以便支援超級電池工廠 Gigafactory 生產電池,開始組裝入門級 Model 3 車款,並且開設約 80 個銷售據點與服務中心,以及約 300 座超級充電站。   Model X 已自去年底開始交車,為了達成上述目標,該公司計畫 2016 年將交付 8 萬至 9 萬輛 Model S 與 Model X 新車;而且第一季的目標設定為 1.6 萬輛,相較去年同期欲成長 60%。   最後,特斯拉並預告 Model 3 車款將訂於 3 月 31 日發表,預計 2017 年下半年交車,執行長 Elon Musk 證實售價大約在 3.5 萬美元(約台幣 117.2 萬元),加上聯邦(美金7500元扣抵)、與各州政府的補貼。估計實際價格在三萬一千元美金上下。可謂“平價” 機種。有望帶入新的購買族群。   消費者可望能在 3 月 31 日起於特斯拉的銷售據點進行預購。  

  (本文授權轉載自《》─〈〉)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

因安全帶隱患 豐田宣佈全球召回百萬輛RAV4等

2016年2月16日,豐田汽車美國銷售公司在美國召回112.4萬輛後排安全帶存在斷裂隱患的RAV4。旋即2月18日豐田汽車公司將召回擴大到全球範圍,覆蓋中國等市場,涉及更多車型,召回車輛的總數也倍增至287萬輛。

按照地區劃分,豐田本次在北美召回130萬輛車(其中美國占1,124,000輛),在歐洲召回625,000輛,在中國召回434,000輛,在日本本土召回177,000輛,其他地區占30,700輛。

車型方面,在全球市場主要是生產於2005年7月和2014年8月之間的RAV4型SUV,而在日本本土市場為生產於2005年10月至2016年1月之間的Vanguard型SUV。在美國市場,召回的傳統動力版RAV4為2006-2012款,而RAV4EV電動車則是2012至2014款。

這將是豐田迄今為止,因安全問題而開展的最大一次召回。

故障解釋:安全帶或被座椅割斷

從本次召回的發端看,2015年10月加拿大進行汽車碰撞研究,發現在遭遇嚴重的正面碰撞事故時,安全帶可能觸及金屬座椅框架/骨架,邊緣被割開導致安全帶斷裂,從而增大了乘員受傷的風險。在加拿大方面發現缺陷之後,豐田開始展開調查研究,因而發起召回。

關於本次召回,豐田承認是車輛設計的問題,而與零部件供應商無關。

目前尚未有相關事故或受傷報導。豐田將通過郵件的方式通知車主進行召回,將車輛交予經銷商免費維修。解決方案是採用樹脂包裹金屬座椅骨架,防止撞車後金屬片結構切割安全帶,杜絕意外發生。
 

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

李克強:進一步支持新能源汽車產業,要推動五項措施

國務院總理李克強2月24日主持召開國務院常務會議,確定進一步支持新能源汽車產業的措施,以結構優化推動綠色發展。

會議指出,發展新能源汽車,推動產業邁向中高端,有利於保護和改善環境,是培育新動能的重要抓手、發展新經濟的重要內容。近兩年來,在國家政策引導和各方努力下,中國新能源汽車在研發推廣、技術水準等方面取得明顯成效,產銷快速增長。下一步,要堅持市場導向和創新驅動,依託大眾創業、萬眾創新,努力攻克核心技術,打破瓶頸制約,加速新能源汽車發展步伐。

一是加快實現動力電池革命性突破。推動大中小企業、高校、科研院所等組建協同攻關、開放共用的動力電池創新平臺,在關鍵材料、電池系統等共性、基礎技術研發上集中發力。中央財政採取以獎代補方式,根據動力電池性能、銷量等指標對企業給予獎勵。加大對動力電池數位化製造成套裝備的支援。

二是加快充電基礎設施建設。明確地方政府、業主、開發商、物業和電網企業等責權利,推動落實住宅社區和黨政機關、企事業單位、機場景區及其他社會停車場等建設充電設施的要求。利用中央預算內投資和配電網專項金融債等支持各地充電設施建設,鼓勵地方建立以充電量為基準的獎勵補貼政策,減免充電服務費用。

三是擴大城市公交、計程車、環衛、物流等領域新能源汽車應用比例。中央國家機關、新能源汽車推廣應用城市的政府部門及公共機構購買新能源汽車占當年配備更新車輛總量的比例,要提高到50%以上。

四是提升新能源汽車整車品質。完善准入標準,加強品質安全監管,發展新能源汽車+物聯網,強化生產企業對新能源汽車的安全監控、動態檢查,建立懲罰性賠償和市場退出等機制。

五是完善財政補貼等扶持政策,督促落實不得對新能源汽車限行限購的要求,破除地方保護,打擊“騙補”行為。建立合理投資回報機制,鼓勵社會資本進入充電設施建設運營、整車租賃、電池回收利用等服務領域。國務院新能源汽車協調機制及其辦公機構要履行好協調職責。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

印尼最老說故事壁畫 考古學家和採礦伐木業賽跑

摘錄自2020年2月26日自由時報報導

外界近期才知道印尼蘇拉威西省一座礦場藏有據信是世上最古老的說故事、具象壁畫。然而壁畫表面到處都有脫落,考古學家正與採礦和伐木業賽跑,尋找附近尚未出土的壁畫。

澳洲格里菲斯大學(Griffith University)的考古學團隊去年12月11日在「自然」(Nature)期刊發表論文指出,他們利用定年技術研究發現,蘇拉威西(Sulawesi)一處石灰岩洞裡一幅描繪半獸半人的狩獵者揮舞長矛、繩索,追捕野豬和侏儒水牛的壁畫,至少可追溯至4萬3900年前的舊石器時代晚期。

駐雅加達美籍記者瓦拉古(Krithika Varagur)在印尼考古學家布迪安多(Budianto Hakim)的陪同下,去年耶誕節前探訪了這座洞穴。她20日在「經濟學人」雜誌姐妹刊物「1843」發表文章,憂心開發礦場的伐木業以及採礦活動對環境造成的改變,會影響這幅壁畫及其他尚未出土壁畫的保存。

瓦拉古指出,洞穴位於多納沙(Tonasa)水泥公司礦場內,多納沙在1984年取得採礦權。壁畫被發現後,多納沙與蘇拉威西文化資產保存中心簽訂契約,將洞穴周邊封鎖起來,以保護壁畫;並承諾如發現新遺跡,也會向資產保存中心報告。但多納沙仍持續開採活動,要參觀洞穴也須先取得多納沙同意。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

尚比亞乾旱飢荒 就學發電全受影響

摘錄自2020年3月3日公視報導

非洲中南部國家尚比亞遭逢嚴重乾旱,數百萬人口面臨飢荒威脅,也連帶影響就學出席率、水力發電和經濟成長。

尚比亞南部正遭逢嚴重乾旱,國際人道組織紛紛送上玉蜀黍和豆子等救援物資,食物短缺也連帶影響了就學狀況。志工教師卡優教尼就說:「我的班上有70名學生,因為飢荒的關係學生曠課,像今天70個學生,只有30個來上課。」

雖然最近有下雨,但別被短暫的綠意盎然給騙了,因為這裡的作物已經好幾年沒有豐收。根據聯合國世界糧食計劃署,非洲南部共有約4500萬人口面臨飢荒危機。四個多小時車程外的卡瑞巴水力發電廠,負責尚比亞全國40%的供電。然而,因為水量不足,渦輪機根本無法產生足夠的電力。

卡瑞巴水力發電廠代理經理喬佛瑞表示:「2020年我們目標發電275千瓩,這是卡瑞巴北岸發電廠,最大發電量的25%,因為水位過低。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

英國將在公共道理上開測無人駕駛卡車車隊

Google已經測試無人駕駛小汽車多年,而這項技術的下一階段,則是無人駕駛貨車。由於擺脫了傳統貨車駕駛員所必須的睡眠休息時間,無人駕駛卡車將能夠讓長途運輸變得比以往更快。

據悉,英國將於今年晚些時候開測無人駕駛卡車車隊,不過它不僅僅是為了提升物流的速度,還有望減輕道路的擁塞狀況。

在不久的將來,人們將能夠在M6高速路上見到高達10輛的無人駕駛貨車車隊。此外,儘管測試是在公共道路上進行,但有關方面會盡可能地將影響和潛在問題降到最低。

當然,這並不是我們首次見到無人駕駛貨車車隊的測試。此前,戴姆勒也曾在德國進行過類似的試驗,只是它仍然需要一個人類駕駛員作為後備。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

【集合系列】- 深入淺出分析LinkedHashMap

一、摘要

在集合系列的第一章,咱們了解到,Map的實現類有HashMap、LinkedHashMap、TreeMap、IdentityHashMap、WeakHashMap、Hashtable、Properties等等。

本文主要從數據結構和算法層面,探討LinkedHashMap的實現。

二、簡介

LinkedHashMap可以認為是HashMap+LinkedList,它既使用HashMap操作數據結構,又使用LinkedList維護插入元素的先後順序,內部採用雙向鏈表(doubly-linked list)的形式將所有元素( entry )連接起來。

LinkedHashMap繼承了HashMap,允許放入key為null的元素,也允許插入value為null的元素。從名字上可以看出該容器是LinkedList和HashMap的混合體,也就是說它同時滿足HashMap和LinkedList的某些特性,可將LinkedHashMap看作採用Linked list增強的HashMap。

打開 LinkedHashMap 源碼,可以看到主要三個核心屬性:

public class LinkedHashMap<K,V>
    extends HashMap<K,V>
    implements Map<K,V>{

    /**雙向鏈表的頭節點*/
    transient LinkedHashMap.Entry<K,V> head;

    /**雙向鏈表的尾節點*/
    transient LinkedHashMap.Entry<K,V> tail;

    /**
      * 1、如果accessOrder為true的話,則會把訪問過的元素放在鏈表後面,放置順序是訪問的順序
      * 2、如果accessOrder為false的話,則按插入順序來遍歷
      */
      final boolean accessOrder;
}

LinkedHashMap 在初始化階段,默認按插入順序來遍歷

public LinkedHashMap() {
        super();
        accessOrder = false;
}

LinkedHashMap 採用的 Hash 算法和 HashMap 相同,不同的是,它重新定義了數組中保存的元素Entry,該Entry除了保存當前對象的引用外,還保存了其上一個元素before和下一個元素after的引用,從而在哈希表的基礎上又構成了雙向鏈接列表。

源碼如下:

static class Entry<K,V> extends HashMap.Node<K,V> {
        //before指的是鏈表前驅節點,after指的是鏈表后驅節點
        Entry<K,V> before, after;
        Entry(int hash, K key, V value, Node<K,V> next) {
            super(hash, key, value, next);
        }
}

可以直觀的看出,雙向鏈表頭部插入的數據為鏈表的入口,迭代器遍歷方向是從鏈表的頭部開始到鏈表尾部結束。

除了可以保迭代歷順序,這種結構還有一個好處:迭代LinkedHashMap時不需要像HashMap那樣遍歷整個table,而只需要直接遍歷header指向的雙向鏈表即可,也就是說LinkedHashMap的迭代時間就只跟entry的個數相關,而跟table的大小無關。

三、常用方法介紹

3.1、get方法

get方法根據指定的key值返回對應的value。該方法跟HashMap.get()方法的流程幾乎完全一樣,默認按照插入順序遍歷。

public V get(Object key) {
        Node<K,V> e;
        if ((e = getNode(hash(key), key)) == null)
            return null;
        if (accessOrder)
            afterNodeAccess(e);
        return e.value;
}

如果accessOrdertrue的話,會把訪問過的元素放在鏈表後面,放置順序是訪問的順序

void afterNodeAccess(Node<K,V> e) { // move node to last
        LinkedHashMap.Entry<K,V> last;
        if (accessOrder && (last = tail) != e) {
            LinkedHashMap.Entry<K,V> p =
                (LinkedHashMap.Entry<K,V>)e, b = p.before, a = p.after;
            p.after = null;
            if (b == null)
                head = a;
            else
                b.after = a;
            if (a != null)
                a.before = b;
            else
                last = b;
            if (last == null)
                head = p;
            else {
                p.before = last;
                last.after = p;
            }
            tail = p;
            ++modCount;
        }
}

測試用例:

public static void main(String[] args) {
        //accessOrder默認為false
        Map<String, String> accessOrderFalse = new LinkedHashMap<>();
        accessOrderFalse.put("1","1");
        accessOrderFalse.put("2","2");
        accessOrderFalse.put("3","3");
        accessOrderFalse.put("4","4");
        System.out.println("acessOrderFalse:"+accessOrderFalse.toString());
        
        //accessOrder設置為true
        Map<String, String> accessOrderTrue = new LinkedHashMap<>(16, 0.75f, true);
        accessOrderTrue.put("1","1");
        accessOrderTrue.put("2","2");
        accessOrderTrue.put("3","3");
        accessOrderTrue.put("4","4");
        accessOrderTrue.get("2");//獲取鍵2
        accessOrderTrue.get("3");//獲取鍵3
        System.out.println("accessOrderTrue:"+accessOrderTrue.toString());
}

輸出結果:

acessOrderFalse:{1=1, 2=2, 3=3, 4=4}
accessOrderTrue:{1=1, 4=4, 2=2, 3=3}

3.2、put方法

put(K key, V value)方法是將指定的key, value對添加到map里。該方法首先會調用HashMap的插入方法,同樣對map做一次查找,看是否包含該元素,如果已經包含則直接返回,查找過程類似於get()方法;如果沒有找到,將元素插入集合。

/**HashMap 中實現*/
public V put(K key, V value) {
    return putVal(hash(key), key, value, false, true);
}

final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
                   boolean evict) {
        Node<K,V>[] tab; Node<K,V> p; int n, i;
        if ((tab = table) == null || (n = tab.length) == 0)
            n = (tab = resize()).length;
        if ((p = tab[i = (n - 1) & hash]) == null)
            tab[i] = newNode(hash, key, value, null);
        else {
            Node<K,V> e; K k;
            if (p.hash == hash &&
                ((k = p.key) == key || (key != null && key.equals(k))))
                e = p;
            else if (p instanceof TreeNode)
                e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);
            else {
                for (int binCount = 0; ; ++binCount) {
                    if ((e = p.next) == null) {
                        p.next = newNode(hash, key, value, null);
                        if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st
                            treeifyBin(tab, hash);
                        break;
                    }
                    if (e.hash == hash &&
                        ((k = e.key) == key || (key != null && key.equals(k))))
                        break;
                    p = e;
                }
            }
            if (e != null) { // existing mapping for key
                V oldValue = e.value;
                if (!onlyIfAbsent || oldValue == null)
                    e.value = value;
                afterNodeAccess(e);
                return oldValue;
            }
        }
        ++modCount;
        if (++size > threshold)
            resize();
        afterNodeInsertion(evict);
        return null;
}

LinkedHashMap 中覆寫的方法

// LinkedHashMap 中覆寫
Node<K,V> newNode(int hash, K key, V value, Node<K,V> e) {
    LinkedHashMap.Entry<K,V> p =
        new LinkedHashMap.Entry<K,V>(hash, key, value, e);
    // 將 Entry 接在雙向鏈表的尾部
    linkNodeLast(p);
    return p;
}

private void linkNodeLast(LinkedHashMap.Entry<K,V> p) {
    LinkedHashMap.Entry<K,V> last = tail;
    tail = p;
    // last 為 null,表明鏈表還未建立
    if (last == null)
        head = p;
    else {
        // 將新節點 p 接在鏈表尾部
        p.before = last;
        last.after = p;
    }
}

3.3、remove方法

remove(Object key)的作用是刪除key值對應的entry,該方法實現邏輯主要以HashMap為主,首先找到key值對應的entry,然後刪除該entry(修改鏈表的相應引用),查找過程跟get()方法類似,最後會調用 LinkedHashMap 中覆寫的方法,將其刪除!

/**HashMap 中實現*/
public V remove(Object key) {
    Node<K,V> e;
    return (e = removeNode(hash(key), key, null, false, true)) == null ?
        null : e.value;
}

final Node<K,V> removeNode(int hash, Object key, Object value,
                           boolean matchValue, boolean movable) {
    Node<K,V>[] tab; Node<K,V> p; int n, index;
    if ((tab = table) != null && (n = tab.length) > 0 &&
        (p = tab[index = (n - 1) & hash]) != null) {
        Node<K,V> node = null, e; K k; V v;
        if (p.hash == hash &&
            ((k = p.key) == key || (key != null && key.equals(k))))
            node = p;
        else if ((e = p.next) != null) {
            if (p instanceof TreeNode) {...}
            else {
                // 遍歷單鏈表,尋找要刪除的節點,並賦值給 node 變量
                do {
                    if (e.hash == hash &&
                        ((k = e.key) == key ||
                         (key != null && key.equals(k)))) {
                        node = e;
                        break;
                    }
                    p = e;
                } while ((e = e.next) != null);
            }
        }
        if (node != null && (!matchValue || (v = node.value) == value ||
                             (value != null && value.equals(v)))) {
            if (node instanceof TreeNode) {...}
            // 將要刪除的節點從單鏈表中移除
            else if (node == p)
                tab[index] = node.next;
            else
                p.next = node.next;
            ++modCount;
            --size;
            afterNodeRemoval(node);    // 調用刪除回調方法進行後續操作
            return node;
        }
    }
    return null;
}

LinkedHashMap 中覆寫的 afterNodeRemoval 方法

void afterNodeRemoval(Node<K,V> e) { // unlink
    LinkedHashMap.Entry<K,V> p =
        (LinkedHashMap.Entry<K,V>)e, b = p.before, a = p.after;
    // 將 p 節點的前驅后後繼引用置空
    p.before = p.after = null;
    // b 為 null,表明 p 是頭節點
    if (b == null)
        head = a;
    else
        b.after = a;
    // a 為 null,表明 p 是尾節點
    if (a == null)
        tail = b;
    else
        a.before = b;
}

四、總結

LinkedHashMap 繼承自 HashMap,所有大部分功能特性基本相同,二者唯一的區別是 LinkedHashMap 在HashMap的基礎上,採用雙向鏈表(doubly-linked list)的形式將所有 entry 連接起來,這樣是為保證元素的迭代順序跟插入順序相同。

主體部分跟HashMap完全一樣,多了header指向雙向鏈表的頭部,tail指向雙向鏈表的尾部,默認雙向鏈表的迭代順序就是entry的插入順序。

五、參考

1、JDK1.7&JDK1.8 源碼
2、

作者:炸雞可樂
出處:

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

延燒八個月 澳洲新南威爾斯省野火終於撲滅

摘錄自2020年3月10日大紀元報導

澳洲新南威爾斯省日前正式宣布,當地延燒了大約八個月、造成無數損失的野火,終於完全撲滅了。據CNN報導,新南威爾斯省的消防部門在2月13日宣布,該省所有野火已經受到控制。而現在,所有野火都已經被撲滅。

新南威爾斯鄉村消防署(NSW Rural FIre Service)在3月2日發推文說:「目前沒有在延燒中的野火。這是自2019年7月初以來的第一次。」該署還提到,這場野火持續了超過240天。這場延燒了幾個月的野火最終導致至少28人死亡,大約3,000棟房屋被毀,多達10億隻動物受到波及。

現在,在澳洲政府正式宣布野火被撲滅之後,該國將開始其災後重建的工作,他們正在討論是否應該針對高風險的地區制定重建的限制。而對於在何處和如何重建房屋而言,屋主正面臨困難的選擇。

森林
災害
生態保育
土地水文
國際新聞
澳洲
大火
澳洲野火

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務