📄 multimap.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.model;
import java.util.*;
import java.io.Serializable;
import org.compiere.util.*;
/**
* MultiMap allows multiple keys with their values.
* It accepts null values as keys and values.
* (implemented as two array lists)
*
* @author Jorg Janke
* @version $Id: MultiMap.java,v 1.4 2002/08/12 01:55:12 danb Exp $
*/
public final class MultiMap implements Map, Serializable
{
/**
* Constructor with 10 initial Capacity (same as ArrayList)
*/
public MultiMap()
{
this(10);
} // MultiMap
/**
* Constructor
*/
public MultiMap(int initialCapacity)
{
m_keys = new ArrayList(initialCapacity);
m_values = new ArrayList(initialCapacity);
} // MultiMap
private ArrayList m_keys = null;
private ArrayList m_values = null;
/**
* Return number of elements
*/
public int size()
{
return m_keys.size();
} // size
/**
* Is Empty
*/
public boolean isEmpty()
{
return (m_keys.size() == 0);
} // isEmpty
/**
* Contains Key
*/
public boolean containsKey(Object key)
{
return m_keys.contains(key);
} // containsKey
/**
* Contains Value
*/
public boolean containsValue(Object value)
{
return m_values.contains(value);
} // containsKey
/**
* Return ArrayList of Values of Key
*/
public Object get(Object key)
{
return getValues(key);
} // get
/**
* Return ArrayList of Values of Key
*/
public ArrayList getValues (Object key)
{
ArrayList list = new ArrayList();
// We don't have it
if (!m_keys.contains(key))
return list;
// go through keys
int size = m_keys.size();
for (int i = 0; i < size; i++)
{
if (m_keys.get(i).equals(key))
if (!list.contains(m_values.get(i)))
list.add(m_values.get(i));
}
return list;
} // getValues
/**
* Return ArrayList of Keys with Value
*/
public ArrayList getKeys (Object value)
{
ArrayList list = new ArrayList();
// We don't have it
if (!m_values.contains(value))
return list;
// go through keys
int size = m_values.size();
for (int i = 0; i < size; i++)
{
if (m_values.get(i).equals(value))
if (!list.contains(m_keys.get(i)))
list.add(m_keys.get(i));
}
return list;
} // getKeys
/**
* Put Key & Value
* @return always null
*/
public Object put(Object key, Object value)
{
m_keys.add(key);
m_values.add(value);
return null;
} // put
/**
* Remove key
*/
public Object remove(Object key)
{
throw new java.lang.UnsupportedOperationException("Method remove() not implemented.");
} // remove
/**
* Put all
*/
public void putAll(Map t)
{
throw new java.lang.UnsupportedOperationException("Method putAll() not implemented.");
} // putAll
/**
* Clear content
*/
public void clear()
{
m_keys.clear();
m_values.clear();
} // clear
/**
* Return HashSet of Keys
*/
public Set keySet()
{
HashSet keys = new HashSet(m_keys);
return keys;
} // keySet
/**
* Return Collection of values
*/
public Collection values()
{
return m_values;
}
/**
*
*/
public Set entrySet()
{
throw new java.lang.UnsupportedOperationException("Method entrySet() not implemented.");
}
/**
*
*/
public boolean equals(Object o)
{
throw new java.lang.UnsupportedOperationException("Method equals() not implemented.");
}
/*************************************************************************/
/**
* Returns class name and number of entries
*/
public String toString()
{
return "MultiMap #" + m_keys.size();
}
/**
* dump all keys - values to log
*/
public void printToLog()
{
int ll = 7; // log level
Log.trace(ll-1, "MultiMap.printToLog");
int size = m_keys.size();
for (int i = 0; i < size; i++)
{
Object k = m_keys.get(i);
Object v = m_values.get(i);
Log.trace(ll, k==null ? "null" : k.toString(), v==null ? "null" : v.toString());
}
} // printToLog
} // MultiMap
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -