コード例 #1
0
ファイル: ListModelMap.java プロジェクト: gotomypc/zk
  public void putAll(Map<? extends K, ? extends V> c) {
    if (c == _map) // special case
    return;

    if (_map instanceof LinkedHashMap) {
      int sz = c.size();
      if (sz <= 0) {
        return;
      }

      List<Map.Entry<? extends K, ? extends V>> added =
          new ArrayList<Map.Entry<? extends K, ? extends V>>(c.size());
      for (Map.Entry<? extends K, ? extends V> me : c.entrySet()) {
        K key = me.getKey();
        if (_map.containsKey(key)) {
          put(key, me.getValue());
        } else {
          added.add(me);
        }
      }

      for (Map.Entry<? extends K, ? extends V> me : added) {
        _map.put(me.getKey(), me.getValue());
      }

      int len = added.size();
      if (len > 0) {
        fireEvent(ListDataEvent.INTERVAL_ADDED, sz, sz + len - 1);
      }
    } else { // bug #1819318  Problem while using SortedSet with Databinding
      // bug #1839634 Problem while using HashSet with Databinding
      _map.putAll(c);
      fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1);
    }
  }
コード例 #2
0
  public void putAll(Map c) {
    if (_map instanceof LinkedHashMap) {
      int sz = c.size();
      if (sz <= 0) {
        return;
      }
      if (c == _map) { // special case
        return;
      }

      List added = new ArrayList(c.size());
      for (Iterator it = c.entrySet().iterator(); it.hasNext(); ) {
        final Entry entry = (Entry) it.next();
        Object key = entry.getKey();
        Object val = entry.getValue();
        if (_map.containsKey(key)) {
          put(key, val);
        } else {
          added.add(entry);
        }
      }

      for (Iterator it = added.iterator(); it.hasNext(); ) {
        final Entry entry = (Entry) it.next();
        Object key = entry.getKey();
        Object val = entry.getValue();
        _map.put(key, val);
      }

      int len = added.size();
      if (len > 0) {
        fireEvent(ListDataEvent.INTERVAL_ADDED, sz, sz + len - 1);
      }
    } else { // bug #1819318  Problem while using SortedSet with Databinding
      // bug #1839634 Problem while using HashSet with Databinding
      _map.putAll(c);
      fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1);
    }
  }