
io.qt.core.QMultiMap Maven / Gradle / Ivy
/****************************************************************************
**
** Copyright (C) 2009-2021 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 super K,? extends java.util.Collection super V>> 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 extends K, ? extends V> entry0, Map.Entry extends K, ? extends V>... entries) {
QPair metaTypes = QMap.findMapMetaType(entry0, entries);
QMultiMap result = new QMultiMap<>(metaTypes.first, metaTypes.second);
result.insert(entry0.getKey(), entry0.getValue());
for (Map.Entry extends K, ? extends V> 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