
io.qt.core.QMultiMap Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of qtjambi Show documentation
Show all versions of qtjambi Show documentation
QtJambi base module containing QtCore, QtGui and QtWidgets.
/****************************************************************************
**
** 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 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