All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.qt.core.QMultiMap Maven / Gradle / Ivy

There is a newer version: 6.8.2
Show newest version
/****************************************************************************
**
** Copyright (C) 2009-2022 Dr. Peter Droste, Omix Visualization GmbH & Co. KG. All rights reserved.
**
** This file is part of Qt Jambi.
**
** ** $BEGIN_LICENSE$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
** 
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
** $END_LICENSE$

**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
package io.qt.core;

import static io.qt.core.QMap.__qt_QMap_begin;
import static io.qt.core.QMap.__qt_QMap_clear;
import static io.qt.core.QMap.__qt_QMap_contains;
import static io.qt.core.QMap.__qt_QMap_count;
import static io.qt.core.QMap.__qt_QMap_end;
import static io.qt.core.QMap.__qt_QMap_find;
import static io.qt.core.QMap.__qt_QMap_first;
import static io.qt.core.QMap.__qt_QMap_firstKey;
import static io.qt.core.QMap.__qt_QMap_insert;
import static io.qt.core.QMap.__qt_QMap_key;
import static io.qt.core.QMap.__qt_QMap_keys;
import static io.qt.core.QMap.__qt_QMap_keysForValue;
import static io.qt.core.QMap.__qt_QMap_last;
import static io.qt.core.QMap.__qt_QMap_lastKey;
import static io.qt.core.QMap.__qt_QMap_lowerBound;
import static io.qt.core.QMap.__qt_QMap_operator_equal;
import static io.qt.core.QMap.__qt_QMap_remove;
import static io.qt.core.QMap.__qt_QMap_size;
import static io.qt.core.QMap.__qt_QMap_take;
import static io.qt.core.QMap.__qt_QMap_upperBound;
import static io.qt.core.QMap.__qt_QMap_value;
import static io.qt.core.QMap.createComparator;

import java.util.Collections;
import java.util.List;
import java.util.Map;

import io.qt.NativeAccess;
import io.qt.QNoNativeResourcesException;
import io.qt.QtUninvokable;

/**
 * 

Java wrapper for Qt class QMultiMap

*/ public class QMultiMap extends io.qt.internal.QtJambiMultiMapObject implements Cloneable { static { QtJambi_LibraryUtilities.initialize(); } @NativeAccess protected QMultiMap(QPrivateConstructor p) { super(p); } public QMultiMap(Class keyType, QMetaType.Type valueMetaType) { this(keyType, new QMetaType(valueMetaType)); } public QMultiMap(QMetaType.Type keyMetaType, Class valueType) { this(new QMetaType(keyMetaType), valueType); } public QMultiMap(QMetaType.Type keyMetaType, QMetaType valueMetaType) { this(new QMetaType(keyMetaType), valueMetaType); } public QMultiMap(QMetaType keyMetaType, QMetaType.Type valueMetaType) { this(keyMetaType, new QMetaType(valueMetaType)); } public QMultiMap(QMetaType.Type keyMetaType, QMetaType.Type valueMetaType) { this(new QMetaType(keyMetaType), new QMetaType(valueMetaType)); } public QMultiMap(Class keyType, Class valueType) { super(null); QMetaType keyMetaType = QMetaType.fromType(keyType); QMetaType valueMetaType = QMetaType.fromType(valueType); if(keyMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be key type of QMultiMap."); if(keyMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be key type of QMultiMap."); if(valueMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be value type of QMultiMap."); if(valueMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be value type of QMultiMap."); initialize(keyType, QtJambi_LibraryUtilities.internal.nativeId(keyMetaType), valueType, QtJambi_LibraryUtilities.internal.nativeId(valueMetaType), null); } public QMultiMap(Map> other) { super(null); QPair metaTypes = findMapMetaType(other); if(metaTypes.first.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be key type of QMultiMap."); if(metaTypes.first.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be key type of QMultiMap."); if(metaTypes.second.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be value type of QMultiMap."); if(metaTypes.second.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be value type of QMultiMap."); initialize(metaTypes.first.javaType(), QtJambi_LibraryUtilities.internal.nativeId(metaTypes.first), metaTypes.second.javaType(), QtJambi_LibraryUtilities.internal.nativeId(metaTypes.second), other); } public QMultiMap(Class keyType, QMetaType valueMetaType) { super(null); QMetaType keyMetaType = QMetaType.fromType(keyType); if(keyMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be key type of QMultiMap."); if(keyMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be key type of QMultiMap."); if(valueMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be value type of QMultiMap."); if(valueMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be value type of QMultiMap."); initialize(keyType, QtJambi_LibraryUtilities.internal.nativeId(keyMetaType), valueMetaType.javaType(), QtJambi_LibraryUtilities.internal.nativeId(valueMetaType), null); } public QMultiMap(QMetaType keyMetaType, Class valueType) { super(null); QMetaType valueMetaType = QMetaType.fromType(valueType); if(keyMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be key type of QMultiMap."); if(keyMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be key type of QMultiMap."); if(valueMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be value type of QMultiMap."); if(valueMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be value type of QMultiMap."); initialize(keyMetaType.javaType(), QtJambi_LibraryUtilities.internal.nativeId(keyMetaType), valueMetaType.javaType(), QtJambi_LibraryUtilities.internal.nativeId(valueMetaType), null); } public QMultiMap(QMetaType keyMetaType, QMetaType valueMetaType) { super(null); if(keyMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be key type of QMultiMap."); if(keyMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be key type of QMultiMap."); if(valueMetaType.id()==0) throw new IllegalArgumentException("QMetaType::UnknownType cannot be value type of QMultiMap."); if(valueMetaType.id()==QMetaType.Type.Void.value()) throw new IllegalArgumentException("void cannot be value type of QMultiMap."); initialize(keyMetaType.javaType(), QtJambi_LibraryUtilities.internal.nativeId(keyMetaType), valueMetaType.javaType(), QtJambi_LibraryUtilities.internal.nativeId(valueMetaType), null); } @QtUninvokable private native void initialize(Class keyType, long keyMetaType, Class valueType, long valueMetaType, Map> other); @Override public QMultiMap clone(){ return new QMultiMap<>(this); } @QtUninvokable protected final io.qt.core.QMapIterator begin() { return __qt_QMap_begin(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final void clear() { __qt_QMap_clear(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final boolean contains(K key) { try{ return __qt_QMap_contains(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, keyMetaType(), key); } } @QtUninvokable public final int count() { return size(); } @QtUninvokable public final int count(K key) { try{ return __qt_QMap_count(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, keyMetaType(), key); } } @QtUninvokable protected final io.qt.core.QMapIterator end() { return __qt_QMap_end(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final io.qt.core.QMapIterator find(K key) { try{ return __qt_QMap_find(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, keyMetaType(), key); } } @QtUninvokable public final V first() { return __qt_QMap_first(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final K firstKey() { return __qt_QMap_firstKey(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final void insert(K key, V value) { try{ __qt_QMap_insert(QtJambi_LibraryUtilities.internal.nativeId(this), key, value); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QMap.handleException(e, keyMetaType(), valueMetaType(), key, value); } } @QtUninvokable public final boolean isEmpty() { return size()==0; } @QtUninvokable public final K key(V value) { return key(value, null); } @QtUninvokable public final K key(V value, K defaultKey) { try{ return __qt_QMap_key(QtJambi_LibraryUtilities.internal.nativeId(this), value, defaultKey); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, valueMetaType(), value); } } @QtUninvokable public final java.util.List keys() { return __qt_QMap_keys(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final java.util.List keys(V value) { try{ return __qt_QMap_keysForValue(QtJambi_LibraryUtilities.internal.nativeId(this), value); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, valueMetaType(), value); } } @QtUninvokable public final V last() { return __qt_QMap_last(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final K lastKey() { return __qt_QMap_lastKey(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final io.qt.core.QMapIterator lowerBound(K key) { try{ return __qt_QMap_lowerBound(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, keyMetaType(), key); } } @QtUninvokable private final boolean operator_equal(java.util.Map other) { return __qt_QMap_operator_equal(QtJambi_LibraryUtilities.internal.nativeId(this), other); } @QtUninvokable public final int removeAll(Object key) { try{ return __qt_QMap_remove(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(IllegalArgumentException e) { return 0; }catch(RuntimeException e) { RuntimeException e1 = QSet.handleException(e, keyMetaType(), key); if(e1==e) throw e; return 0; } } @QtUninvokable public final int size() { return __qt_QMap_size(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable public final V take(K key) { try { return __qt_QMap_take(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, keyMetaType(), key); } } @QtUninvokable public final java.util.List uniqueKeys() { return __qt_QMultiMap_uniqueKeys(QtJambi_LibraryUtilities.internal.nativeId(this)); } @QtUninvokable static native java.util.List __qt_QMultiMap_uniqueKeys(long __this__nativeId); @QtUninvokable public final void unite(java.util.Map> other) { __qt_QMultiMap_unite(QtJambi_LibraryUtilities.internal.nativeId(this), other); } @QtUninvokable static native void __qt_QMultiMap_unite(long __this__nativeId, Object other); @QtUninvokable public final io.qt.core.QMapIterator upperBound(K key) { return __qt_QMap_upperBound(QtJambi_LibraryUtilities.internal.nativeId(this), key); } @QtUninvokable public final V value(K key) { return value(key, null); } @QtUninvokable public final V value(K key, V defaultValue) { try{ return __qt_QMap_value(QtJambi_LibraryUtilities.internal.nativeId(this), key, defaultValue); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QMap.handleException(e, keyMetaType(), valueMetaType(), key, defaultValue); } } @Override @QtUninvokable public final java.util.Collection> values() { long id = QtJambi_LibraryUtilities.internal.nativeId(this); java.util.List> result = new java.util.ArrayList<>(); for(Object key : __qt_QMap_keys(id)) { result.add(__qt_QMultiMap_valuesKey(id, key)); } return result; } @QtUninvokable public final java.util.List values(K key) { try{ return __qt_QMultiMap_valuesKey(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QSet.handleException(e, keyMetaType(), key); } } @QtUninvokable private static native java.util.List __qt_QMultiMap_valuesKey(long __this__nativeId, K key); @QtUninvokable public final boolean contains(K key, V value) { try{ return __qt_QMultiMap_contains(QtJambi_LibraryUtilities.internal.nativeId(this), key, value); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QMap.handleException(e, keyMetaType(), valueMetaType(), key, value); } } @QtUninvokable private static native boolean __qt_QMultiMap_contains(long __this__nativeId, K key, V value); @QtUninvokable public final int count(K key, V value) { try{ return __qt_QMultiMap_count(QtJambi_LibraryUtilities.internal.nativeId(this), key, value); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QMap.handleException(e, keyMetaType(), valueMetaType(), key, value); } } @QtUninvokable private static native int __qt_QMultiMap_count(long __this__nativeId, K key, V value); @QtUninvokable public final io.qt.core.QMapIterator find(K key, V value) { try{ return __qt_QMultiMap_find(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QMap.handleException(e, keyMetaType(), valueMetaType(), key, value); } } @QtUninvokable static native io.qt.core.QMapIterator __qt_QMultiMap_find(long __this__nativeId, K key); @QtUninvokable public final int removeAll(K key, V value) { try{ return __qt_QMultiMap_remove(QtJambi_LibraryUtilities.internal.nativeId(this), key, value); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QMap.handleException(e, keyMetaType(), valueMetaType(), key, value); } } @QtUninvokable static native int __qt_QMultiMap_remove(long __this__nativeId, K key, V value); @QtUninvokable public final void replaceOne(K key, V value) { try{ __qt_QMultiMap_replace(QtJambi_LibraryUtilities.internal.nativeId(this), key, value); }catch(QNoNativeResourcesException e) { throw e; }catch(RuntimeException e) { throw QMap.handleException(e, keyMetaType(), valueMetaType(), key, value); } } @QtUninvokable static native void __qt_QMultiMap_replace(long __this__nativeId, K key, V value); @SuppressWarnings("unchecked") @Override @QtUninvokable public boolean equals(Object other) { if (other instanceof java.util.Map && QMap.checkContainerType(this.keyMetaType(), this.valueMetaType(), (java.util.Map) other)) { return operator_equal((java.util.Map) other); } return false; } @Override @QtUninvokable public final java.util.Comparator comparator(){ return createComparator(keyMetaType().javaType(), this); } @Override @QtUninvokable public final boolean containsKey(Object key){ try{ return __qt_QMap_contains(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(IllegalArgumentException e) { return false; }catch(RuntimeException e) { RuntimeException e1 = QSet.handleException(e, keyMetaType(), key); if(e1==e) throw e; return false; } } @Override @QtUninvokable public final List get(Object key){ try{ return __qt_QMultiMap_valuesKey(QtJambi_LibraryUtilities.internal.nativeId(this), key); }catch(QNoNativeResourcesException e) { throw e; }catch(IllegalArgumentException e) { return null; }catch(RuntimeException e) { RuntimeException e1 = QSet.handleException(e, keyMetaType(), key); if(e1==e) throw e; return null; } } @Override @QtUninvokable public final java.util.List put(K key, java.util.List values){ java.util.List old = values(key); for(V value : values) insert(key, value); return old; } @SuppressWarnings("unchecked") @Override @QtUninvokable public final java.util.List remove(Object key){ try{ java.util.List result = __qt_QMultiMap_valuesKey(QtJambi_LibraryUtilities.internal.nativeId(this), (K)key); removeAll(key); return result; }catch(QNoNativeResourcesException e) { throw e; }catch(IllegalArgumentException e) { return Collections.emptyList(); }catch(RuntimeException e) { RuntimeException e1 = QSet.handleException(e, keyMetaType(), key); if(e1==e) throw e; return Collections.emptyList(); } } @Override @QtUninvokable public final boolean containsValue(Object value){ try { return __qt_QMap_keysForValue(QtJambi_LibraryUtilities.internal.nativeId(this), value).isEmpty(); }catch(QNoNativeResourcesException e) { throw e; }catch(IllegalArgumentException e) { return false; }catch(RuntimeException e) { RuntimeException e1 = QSet.handleException(e, valueMetaType(), value); if(e1==e) throw e; return false; } } @Override @QtUninvokable public int hashCode() { int hashCode = getClass().hashCode(); for (QPair e : this) hashCode = 31*hashCode + (e==null ? 0 : e.hashCode()); return hashCode; } @io.qt.QtUninvokable public void writeTo(io.qt.core.QDataStream stream){ __qt_QMultiMap_writeTo(QtJambi_LibraryUtilities.internal.nativeId(this), QtJambi_LibraryUtilities.internal.nativeId(stream)); } @io.qt.QtUninvokable private native void __qt_QMultiMap_writeTo(long __this__nativeId, long stream); @io.qt.QtUninvokable public void readFrom(io.qt.core.QDataStream stream){ __qt_QMultiMap_readFrom(QtJambi_LibraryUtilities.internal.nativeId(this), QtJambi_LibraryUtilities.internal.nativeId(stream)); } @io.qt.QtUninvokable private native void __qt_QMultiMap_readFrom(long __this__nativeId, long stream); @io.qt.QtUninvokable final QMetaType keyMetaType() { return QMap.keyMetaType(QtJambi_LibraryUtilities.internal.nativeId(this)); } @io.qt.QtUninvokable final QMetaType valueMetaType() { return QMap.valueMetaType(QtJambi_LibraryUtilities.internal.nativeId(this)); } /** * Returns a QMultiMap containing a single mapping. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the mapping's key * @param v1 the mapping's value * @return a {@code QMultiMap} containing the specified mapping * @throws NullPointerException if the key or the value is {@code null} */ public static QMultiMap of(K k1, V v1) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1), QList.findElementMetaType(v1)); result.insert(k1, v1); return result; } /** * Returns a QMultiMap containing two mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2), QList.findElementMetaType(v1, v2)); result.insert(k1, v1); result.insert(k2, v2); return result; } /** * Returns a QMultiMap containing three mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3), QList.findElementMetaType(v1, v2, v3)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); return result; } /** * Returns a QMultiMap containing four mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @param k4 the fourth mapping's key * @param v4 the fourth mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3, k4), QList.findElementMetaType(v1, v2, v3, v4)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); result.insert(k4, v4); return result; } /** * Returns a QMultiMap containing five mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @param k4 the fourth mapping's key * @param v4 the fourth mapping's value * @param k5 the fifth mapping's key * @param v5 the fifth mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3, k4, k5), QList.findElementMetaType(v1, v2, v3, v4, v5)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); result.insert(k4, v4); result.insert(k5, v5); return result; } /** * Returns a QMultiMap containing six mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @param k4 the fourth mapping's key * @param v4 the fourth mapping's value * @param k5 the fifth mapping's key * @param v5 the fifth mapping's value * @param k6 the sixth mapping's key * @param v6 the sixth mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3, k4, k5, k6), QList.findElementMetaType(v1, v2, v3, v4, v5, v6)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); result.insert(k4, v4); result.insert(k5, v5); result.insert(k6, v6); return result; } /** * Returns a QMultiMap containing seven mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @param k4 the fourth mapping's key * @param v4 the fourth mapping's value * @param k5 the fifth mapping's key * @param v5 the fifth mapping's value * @param k6 the sixth mapping's key * @param v6 the sixth mapping's value * @param k7 the seventh mapping's key * @param v7 the seventh mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3, k4, k5, k6, k7), QList.findElementMetaType(v1, v2, v3, v4, v5, v6, v7)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); result.insert(k4, v4); result.insert(k5, v5); result.insert(k6, v6); result.insert(k7, v7); return result; } /** * Returns a QMultiMap containing eight mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @param k4 the fourth mapping's key * @param v4 the fourth mapping's value * @param k5 the fifth mapping's key * @param v5 the fifth mapping's value * @param k6 the sixth mapping's key * @param v6 the sixth mapping's value * @param k7 the seventh mapping's key * @param v7 the seventh mapping's value * @param k8 the eighth mapping's key * @param v8 the eighth mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3, k4, k5, k6, k7, k8), QList.findElementMetaType(v1, v2, v3, v4, v5, v6, v7, v8)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); result.insert(k4, v4); result.insert(k5, v5); result.insert(k6, v6); result.insert(k7, v7); result.insert(k8, v8); return result; } /** * Returns a QMultiMap containing nine mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @param k4 the fourth mapping's key * @param v4 the fourth mapping's value * @param k5 the fifth mapping's key * @param v5 the fifth mapping's value * @param k6 the sixth mapping's key * @param v6 the sixth mapping's value * @param k7 the seventh mapping's key * @param v7 the seventh mapping's value * @param k8 the eighth mapping's key * @param v8 the eighth mapping's value * @param k9 the ninth mapping's key * @param v9 the ninth mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3, k4, k5, k6, k7, k8, k9), QList.findElementMetaType(v1, v2, v3, v4, v5, v6, v7, v8, v9)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); result.insert(k4, v4); result.insert(k5, v5); result.insert(k6, v6); result.insert(k7, v7); result.insert(k8, v8); result.insert(k9, v9); return result; } /** * Returns a QMultiMap containing ten mappings. * * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param k1 the first mapping's key * @param v1 the first mapping's value * @param k2 the second mapping's key * @param v2 the second mapping's value * @param k3 the third mapping's key * @param v3 the third mapping's value * @param k4 the fourth mapping's key * @param v4 the fourth mapping's value * @param k5 the fifth mapping's key * @param v5 the fifth mapping's value * @param k6 the sixth mapping's key * @param v6 the sixth mapping's value * @param k7 the seventh mapping's key * @param v7 the seventh mapping's value * @param k8 the eighth mapping's key * @param v8 the eighth mapping's value * @param k9 the ninth mapping's key * @param v9 the ninth mapping's value * @param k10 the tenth mapping's key * @param v10 the tenth mapping's value * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any key or value is {@code null} */ public static QMultiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) { QMultiMap result = new QMultiMap<>( QList.findElementMetaType(k1, k2, k3, k4, k5, k6, k7, k8, k9, k10), QList.findElementMetaType(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)); result.insert(k1, v1); result.insert(k2, v2); result.insert(k3, v3); result.insert(k4, v4); result.insert(k5, v5); result.insert(k6, v6); result.insert(k7, v7); result.insert(k8, v8); result.insert(k9, v9); result.insert(k10, v10); return result; } /** * Returns a QMultiMap containing keys and values extracted from the given entries. * * @apiNote * It is convenient to create the map entries using the {@link Map#entry Map.entry()} method. * For example, * *
{@code
     *     import static java.util.Map.entry;
     *
     *     QMultiMap map = QMultiMap.ofEntries(
     *         entry(1, "a"),
     *         entry(2, "b"),
     *         entry(3, "c"),
     *         ...
     *         entry(26, "z"));
     * }
* * @param the {@code QMultiMap}'s key type * @param the {@code QMultiMap}'s value type * @param entries {@code java.util.Map.Entry}s containing the keys and values from which the map is populated * @return a {@code QMultiMap} containing the specified mappings * @throws NullPointerException if any entry, key, or value is {@code null}, or if * the {@code entries} array is {@code null} */ @SafeVarargs public static QMultiMap ofEntries(Map.Entry entry0, Map.Entry... entries) { QPair metaTypes = QMap.findMapMetaType(entry0, entries); QMultiMap result = new QMultiMap<>(metaTypes.first, metaTypes.second); result.insert(entry0.getKey(), entry0.getValue()); for (Map.Entry entry : entries) { result.insert(entry.getKey(), entry.getValue()); } return result; } static QPair findMapMetaType(Map> elements){ if(elements.getClass()==QMap.class) { return new QPair<>(((QMap)elements).keyMetaType(), ((QMap)elements).valueMetaType()); }else if(elements.getClass()==QHash.class) { return new QPair<>(((QHash)elements).keyMetaType(), ((QHash)elements).valueMetaType()); }else if(elements.getClass()==QMultiMap.class) { return new QPair<>(((QMultiMap)elements).keyMetaType(), ((QMultiMap)elements).valueMetaType()); }else if(elements.getClass()==QMultiHash.class) { return new QPair<>(((QMultiHash)elements).keyMetaType(), ((QMultiHash)elements).valueMetaType()); }else { QMetaType keyMetaType = new QMetaType(); Class keyType = null; QMetaType valueMetaType = new QMetaType(); Class valueType = null; for(Entry> entry : elements.entrySet()) { Object key = entry.getKey(); if(keyMetaType!=null) { QMetaType _result = QList.getMetaType(key); if(!keyMetaType.isValid() || keyMetaType.id()==QMetaType.Type.Nullptr.value()) keyMetaType = _result; if(!_result.equals(keyMetaType)) { keyMetaType = null; } } if(key!=null) { if(keyType==null) { keyType = key.getClass(); }else { Class type2 = key.getClass(); if(type2!=keyType) { if(type2.isAssignableFrom(keyType)) { keyType = type2; }else if(!keyType.isAssignableFrom(type2)) { do{ keyType = keyType.getSuperclass(); }while(!keyType.isAssignableFrom(type2)); } } } } for(Object value : entry.getValue()) { if(valueMetaType!=null) { QMetaType _result = QList.getMetaType(value); if(!valueMetaType.isValid() || valueMetaType.id()==QMetaType.Type.Nullptr.value()) valueMetaType = _result; if(!_result.equals(valueMetaType)) { valueMetaType = null; } } if(value!=null) { if(valueType==null) { valueType = value.getClass(); }else { Class type2 = value.getClass(); if(type2!=valueType) { if(type2.isAssignableFrom(valueType)) { valueType = type2; }else if(!valueType.isAssignableFrom(type2)) { do{ valueType = valueType.getSuperclass(); }while(!valueType.isAssignableFrom(type2)); } } } } } } if(keyMetaType==null) keyMetaType = QMetaType.fromType(keyType); if(valueMetaType==null) valueMetaType = QMetaType.fromType(valueType); return new QPair<>(keyMetaType, valueMetaType); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy