亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? observablecollections.java

?? java屬性邦定的(JSR-295)的一個實現
?? JAVA
字號:
/* * Copyright (C) 2006-2007 Sun Microsystems, Inc. All rights reserved. Use is * subject to license terms. */package org.jdesktop.observablecollections;import java.util.AbstractList;import java.util.AbstractMap;import java.util.AbstractSet;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.CopyOnWriteArrayList;/** * {@code ObservableCollections} provides factory methods for creating * observable lists and maps. *  *  * @author sky */public final class ObservableCollections {    /**     * Creates and returns an {@code ObservableMap} wrapping the supplied     * {@code Map}.     *     * @param map the {@code Map} to wrap     * @return an {@code ObservableMap}     * @throws IllegalArgumentException if {@code map} is {@code null}     */    public static <K,V> ObservableMap<K,V> observableMap(Map<K,V> map) {        if (map == null) {            throw new IllegalArgumentException("Map must be non-null");        }        return new ObservableMapImpl<K,V>(map);    }    /**     * Creates and returns an {@code ObservableList} wrapping the supplied     * {@code List}.     *     * @param list the {@code List} to wrap     * @return an {@code ObservableList}     * @throws IllegalArgumentException if {@code list} is {@code null}     */    public static <E> ObservableList<E> observableList(List<E> list) {        if (list == null) {            throw new IllegalArgumentException("List must be non-null");        }        return new ObservableListImpl<E>(list, false);    }    /**     * Creates and returns an {@code ObservableListHelper} wrapping     * the supplied {@code List}. If you can track changes to the underlying     * list, use this method instead of {@code observableList()}.     *     * @param list the {@code List} to wrap     * @return an {@code ObservableList}     * @throws IllegalArgumentException if {@code list} is {@code null}     *     * @see #observableList     */    public static <E> ObservableListHelper<E> observableListHelper(List<E> list) {        ObservableListImpl<E> oList = new ObservableListImpl<E>(list, true);        return new ObservableListHelper<E>(oList);    }        /**     * {@code ObservableListHelper} is created by {@code observableListHelper},     * and useful when changes to individual elements of the list can be     * tracked.     *     * @see #observableListHelper     */    public static final class ObservableListHelper<E> {        private final ObservableListImpl<E> list;        ObservableListHelper(ObservableListImpl<E> list) {            this.list = list;        }        /**         * Returns the {@code ObservableList}.         *         * @return the observable list         */        public ObservableList<E> getObservableList() {            return list;        }        /**         * Sends notification that the element at the specified index         * has changed.         *         * @param index the index of the element that has changed         * @throws ArrayIndexOutOfBoundsException if index is outside the         *         range of the {@code List} ({@code < 0 || >= size})         */        public void fireElementChanged(int index) {            if (index < 0 || index >= list.size()) {                throw new ArrayIndexOutOfBoundsException("Illegal index");            }            list.fireElementChanged(index);        }    }    private static final class ObservableMapImpl<K,V> extends AbstractMap<K,V>             implements ObservableMap<K,V> {        private Map<K,V> map;        private List<ObservableMapListener> listeners;        private Set<Map.Entry<K,V>> entrySet;                ObservableMapImpl(Map<K,V> map) {            this.map = map;            listeners = new CopyOnWriteArrayList<ObservableMapListener>();        }                public void clear() {            // Remove all elements via iterator to trigger notification            Iterator<K> iterator = keySet().iterator();            while (iterator.hasNext()) {                iterator.next();                iterator.remove();            }        }        public boolean containsKey(Object key) {            return map.containsKey(key);        }        public boolean containsValue(Object value) {            return map.containsValue(value);        }        public Set<Map.Entry<K,V>> entrySet() {            Set<Map.Entry<K,V>> es = entrySet;            return es != null ? es : (entrySet = new EntrySet());        }                public V get(Object key) {            return map.get(key);        }        public boolean isEmpty() {            return map.isEmpty();        }                public V put(K key, V value) {            V lastValue;            if (containsKey(key)) {                lastValue = map.put(key, value);                for (ObservableMapListener listener : listeners) {                    listener.mapKeyValueChanged(this, key, lastValue);                }            } else {                lastValue = map.put(key, value);                for (ObservableMapListener listener : listeners) {                    listener.mapKeyAdded(this, key);                }            }            return lastValue;        }                public void putAll(Map<? extends K, ? extends V> m) {            for (K key : m.keySet()) {                put(key, m.get(key));            }        }                public V remove(Object key) {            if (containsKey(key)) {                V value = map.remove(key);                for (ObservableMapListener listener : listeners) {                    listener.mapKeyRemoved(this, key, value);                }                return value;            }            return null;        }                public int size() {            return map.size();        }                public void addObservableMapListener(ObservableMapListener listener) {            listeners.add(listener);        }        public void removeObservableMapListener(ObservableMapListener listener) {            listeners.remove(listener);        }                        private class EntryIterator implements Iterator<Map.Entry<K,V>> {            private Iterator<Map.Entry<K,V>> realIterator;            private Map.Entry<K,V> last;                        EntryIterator() {                realIterator = map.entrySet().iterator();            }            public boolean hasNext() {                return realIterator.hasNext();            }            public Map.Entry<K,V> next() {                last = realIterator.next();                return last;            }            public void remove() {                if (last == null) {                    throw new IllegalStateException();                }                Object toRemove = last.getKey();                last = null;                ObservableMapImpl.this.remove(toRemove);            }        }                private class EntrySet extends AbstractSet<Map.Entry<K,V>> {            public Iterator<Map.Entry<K,V>> iterator() {                return new EntryIterator();            }            @SuppressWarnings("unchecked")            public boolean contains(Object o) {                if (!(o instanceof Map.Entry)) {                    return false;                }                Map.Entry<K,V> e = (Map.Entry<K,V>)o;                return containsKey(e.getKey());            }            @SuppressWarnings("unchecked")            public boolean remove(Object o) {                if (o instanceof Map.Entry) {                    K key = ((Map.Entry<K,V>)o).getKey();                    if (containsKey(key)) {                        remove(key);                        return true;                    }                }                return false;            }                        public int size() {                return ObservableMapImpl.this.size();            }            public void clear() {                ObservableMapImpl.this.clear();            }        }    }        private static final class ObservableListImpl<E> extends AbstractList<E>            implements ObservableList<E> {        private final boolean supportsElementPropertyChanged;        private List<E> list;        private List<ObservableListListener> listeners;                ObservableListImpl(List<E> list, boolean supportsElementPropertyChanged) {            this.list = list;            listeners = new CopyOnWriteArrayList<ObservableListListener>();            this.supportsElementPropertyChanged = supportsElementPropertyChanged;        }        public E get(int index) {            return list.get(index);        }        public int size() {            return list.size();        }        public E set(int index, E element) {            E oldValue = list.set(index, element);            for (ObservableListListener listener : listeners) {                listener.listElementReplaced(this, index, oldValue);            }            return oldValue;        }        public void add(int index, E element) {            list.add(index, element);            modCount++;            for (ObservableListListener listener : listeners) {                listener.listElementsAdded(this, index, 1);            }        }        public E remove(int index) {            E oldValue = list.remove(index);            modCount++;            for (ObservableListListener listener : listeners) {                listener.listElementsRemoved(this, index,                        java.util.Collections.singletonList(oldValue));            }            return oldValue;        }        public boolean addAll(Collection<? extends E> c) {            return addAll(size(), c);        }                public boolean addAll(int index, Collection<? extends E> c) {            if (list.addAll(index, c)) {                modCount++;                for (ObservableListListener listener : listeners) {                    listener.listElementsAdded(this, index, c.size());                }            }            return false;        }        public void clear() {            List<E> dup = new ArrayList<E>(list);            list.clear();            modCount++;            if (dup.size() != 0) {                for (ObservableListListener listener : listeners) {                    listener.listElementsRemoved(this, 0, dup);                }            }        }        public boolean containsAll(Collection<?> c) {            return list.containsAll(c);        }        public <T> T[] toArray(T[] a) {            return list.toArray(a);        }        public Object[] toArray() {            return list.toArray();        }        private void fireElementChanged(int index) {            for (ObservableListListener listener : listeners) {                listener.listElementPropertyChanged(this, index);            }        }        public void addObservableListListener(ObservableListListener listener) {            listeners.add(listener);        }        public void removeObservableListListener(ObservableListListener listener) {            listeners.remove(listener);        }        public boolean supportsElementPropertyChanged() {            return supportsElementPropertyChanged;        }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区成人| 中文字幕一区二区不卡 | 26uuu国产电影一区二区| 久久久久久影视| 舔着乳尖日韩一区| 成人午夜免费av| 欧美一级欧美三级| 亚洲一线二线三线视频| 懂色av一区二区夜夜嗨| 欧美成人一区二区三区在线观看| 有码一区二区三区| 99久久免费精品高清特色大片| 精品国产精品网麻豆系列| 夜夜嗨av一区二区三区| voyeur盗摄精品| 国产三级久久久| 久久不见久久见免费视频7| 欧美人狂配大交3d怪物一区| 一区二区三区在线免费| 成人av网站在线观看| 久久精品夜色噜噜亚洲a∨| 日韩电影在线一区二区| 6080国产精品一区二区| 亚洲精品老司机| 色噜噜狠狠成人网p站| 国产精品成人免费在线| 成人黄色软件下载| 成人毛片视频在线观看| 青青草原综合久久大伊人精品 | 欧美大片一区二区| 亚洲电影第三页| 欧美在线短视频| 一区二区三区在线视频免费| 97久久久精品综合88久久| 日韩美女视频19| 91亚洲男人天堂| 亚洲激情图片qvod| 欧美亚洲国产一区在线观看网站| 亚洲欧美日韩电影| 欧美日韩成人在线| 日本一区中文字幕| 日韩欧美第一区| 国产在线精品免费| 国产精品家庭影院| 91久久香蕉国产日韩欧美9色| 亚洲视频一二三区| 欧美中文字幕一二三区视频| 午夜激情一区二区| 99热精品一区二区| 国产日韩精品一区二区三区在线| 国产制服丝袜一区| 国产日本欧洲亚洲| 91美女视频网站| 亚洲大片精品永久免费| 欧美一卡在线观看| 国产成人午夜视频| 亚洲精品成人精品456| 69堂国产成人免费视频| 国产主播一区二区三区| 日韩一区欧美一区| 欧美高清精品3d| 国产在线视频不卡二| 136国产福利精品导航| 欧美精品三级日韩久久| 国产成人免费在线| 一区二区三区日韩在线观看| 欧美不卡一区二区三区四区| 成人高清在线视频| 喷水一区二区三区| 国产精品久久久久一区二区三区 | 国产一区二区电影| 国产精品欧美久久久久无广告 | 欧美精品三级日韩久久| 国产成人免费9x9x人网站视频| 中文字幕在线一区二区三区| 欧美顶级少妇做爰| 97久久精品人人做人人爽 | 不卡的电影网站| 欧美一级免费观看| 日韩欧美你懂的| 99re热这里只有精品视频| 男男视频亚洲欧美| 一区二区三区在线观看网站| 精品日韩在线观看| 国产在线一区二区| 一区二区高清免费观看影视大全| 欧美不卡一区二区三区四区| 色999日韩国产欧美一区二区| 久久国产剧场电影| 三级欧美韩日大片在线看| 亚洲欧洲精品一区二区精品久久久| 日韩一二三四区| 欧美视频一区二区三区| eeuss鲁片一区二区三区在线观看| 麻豆精品一二三| 亚洲福利一二三区| 亚洲免费观看高清完整版在线观看 | 色欧美88888久久久久久影院| 国产一区二区伦理| 久久精品国产亚洲a| 午夜久久电影网| 亚洲欧洲综合另类| 国产精品毛片无遮挡高清| 精品国产百合女同互慰| 欧美一区二区三区公司| 欧美日韩久久一区二区| 日本乱码高清不卡字幕| 91热门视频在线观看| voyeur盗摄精品| 99精品国产99久久久久久白柏| 国产九色sp调教91| 国产综合一区二区| 国产高清无密码一区二区三区| 狠狠色狠狠色综合日日91app| 蜜臀va亚洲va欧美va天堂| 同产精品九九九| 精品一区二区影视| 亚洲视频一区二区在线观看| 国产精品久久久久久久久动漫 | 欧美在线短视频| 欧美视频三区在线播放| 欧美综合在线视频| 欧美韩日一区二区三区四区| 久久精品一区二区三区不卡牛牛| 亚洲精品在线免费观看视频| 精品日本一线二线三线不卡| 日韩女优av电影| 久久九九99视频| 国产精品区一区二区三| 亚洲精品视频在线看| 一区二区三区在线高清| 五月综合激情婷婷六月色窝| 蜜臀av亚洲一区中文字幕| 极品美女销魂一区二区三区 | 色婷婷精品大在线视频| 欧美亚洲综合在线| 91精品国产综合久久香蕉麻豆 | 美腿丝袜亚洲三区| 激情都市一区二区| 99久久久久久| 欧美日本国产视频| 久久久久国产成人精品亚洲午夜| 久久蜜桃av一区精品变态类天堂| 亚洲欧洲在线观看av| 亚洲成人在线网站| 黄页视频在线91| 色哟哟在线观看一区二区三区| 7777精品久久久大香线蕉| 久久久91精品国产一区二区精品| 亚洲人成精品久久久久| 免费观看91视频大全| 成人av午夜影院| 一区二区三区丝袜| 亚洲曰韩产成在线| 免费视频最近日韩| 91香蕉视频在线| 日韩精品一区二区三区视频播放 | 日韩精品三区四区| 国产福利一区在线| 欧美日韩国产综合视频在线观看 | 91精品一区二区三区久久久久久| 国产亚洲福利社区一区| 亚洲成a人片综合在线| 国产成人av影院| 91精品中文字幕一区二区三区| 中文字幕一区在线观看视频| 日韩高清一区在线| 色婷婷亚洲综合| 国产精品美女久久久久久久| 六月丁香婷婷色狠狠久久| 91国偷自产一区二区开放时间 | 欧美tickle裸体挠脚心vk| 亚洲精品视频自拍| 成人污污视频在线观看| 日韩一区二区免费在线观看| 亚洲老司机在线| 成人涩涩免费视频| 久久婷婷成人综合色| 日本不卡免费在线视频| 91九色02白丝porn| 综合色天天鬼久久鬼色| 丁香五精品蜜臀久久久久99网站| 日韩午夜三级在线| 丝袜美腿亚洲色图| 欧美日韩一区二区在线观看视频| 最新日韩av在线| 成人黄色软件下载| 国产欧美精品在线观看| 狠狠狠色丁香婷婷综合激情| 欧美一级片免费看| 蜜臀精品一区二区三区在线观看 | 色综合色综合色综合| 国产精品国产三级国产aⅴ入口| 国产黄色精品网站| 久久色在线观看| 久久aⅴ国产欧美74aaa| 欧美电影免费观看高清完整版| 免费观看日韩av| 久久只精品国产| 国产综合色在线|