在Java中自定义的一个key对多个Value的map
2017-01-09 22:06
579 查看
实现类:
import java.util.*;
/**
* 自定义一对多map
*/
public class OToMoreMap<K,V>{
private List<K> mkey;
private List<List<V>> mvlaue;
public OToMoreMap(){
mkey = new ArrayList<K>();
mvlaue = new ArrayList<List<V>>();
}
/*
**添加元素
*/
public void put(K key, V value){
List list = new ArrayList<V>();
list.add(value);
if (containsKey(key)){
mvlaue.get(mkey.indexOf(key)).add(value);
}else {
mkey.add(key);
mvlaue.add(list);
}
}
/*
*通过index获取key
*/
public K getkey(int i){
return mkey.get(i);
}
/*
*通过index获取values
*/
public List<V> getvalue(int i){
return mvlaue.get(i);
}
/*
*通过index获取元素
*/
public Map<K,List<V>> get(int i){
Map<K,List<V>> map = new HashMap<>();
map.put(mkey.get(i),mvlaue.get(i));
return map;
}
/*
*获取全部元素
*/
public Map<K,List<V>> getAll(){
Map<K,List<V>> map = new HashMap<>();
for (int i = 0; i < mkey.size(); i++) {
map.put(mkey.get(i),mvlaue.get(i));
}
return map;
}
//查看key是否重复
public boolean containsKey(K key){
if (mkey.contains(key)){
return true;
}else {
return false;
}
}
/*
*大小
*/
public long getSize(){
return mkey.size();
}
/*
*移除
*/
public boolean removeAll(){
mkey.clear();
mvlaue.clear();
if (mkey.isEmpty()&&mvlaue.isEmpty()){
return true;
}else{
return false;
}
}
}
测试:
输出结果:
{0=[12, 13]}
{1=[13]}
{0=[12, 13], 1=[13]}
import java.util.*;
/**
* 自定义一对多map
*/
public class OToMoreMap<K,V>{
private List<K> mkey;
private List<List<V>> mvlaue;
public OToMoreMap(){
mkey = new ArrayList<K>();
mvlaue = new ArrayList<List<V>>();
}
/*
**添加元素
*/
public void put(K key, V value){
List list = new ArrayList<V>();
list.add(value);
if (containsKey(key)){
mvlaue.get(mkey.indexOf(key)).add(value);
}else {
mkey.add(key);
mvlaue.add(list);
}
}
/*
*通过index获取key
*/
public K getkey(int i){
return mkey.get(i);
}
/*
*通过index获取values
*/
public List<V> getvalue(int i){
return mvlaue.get(i);
}
/*
*通过index获取元素
*/
public Map<K,List<V>> get(int i){
Map<K,List<V>> map = new HashMap<>();
map.put(mkey.get(i),mvlaue.get(i));
return map;
}
/*
*获取全部元素
*/
public Map<K,List<V>> getAll(){
Map<K,List<V>> map = new HashMap<>();
for (int i = 0; i < mkey.size(); i++) {
map.put(mkey.get(i),mvlaue.get(i));
}
return map;
}
//查看key是否重复
public boolean containsKey(K key){
if (mkey.contains(key)){
return true;
}else {
return false;
}
}
/*
*大小
*/
public long getSize(){
return mkey.size();
}
/*
*移除
*/
public boolean removeAll(){
mkey.clear();
mvlaue.clear();
if (mkey.isEmpty()&&mvlaue.isEmpty()){
return true;
}else{
return false;
}
}
}
测试:
public class test { public static void main(String[] agrs){ OToMoreMap<Integer,Integer> moreMap = new OToMoreMap<>(); moreMap.put(0,12); moreMap.put(0,13); moreMap.put(1,13); for (int i = 0; i < moreMap.getSize(); i++) { System.out.println(moreMap.get(i)); } System.out.println(moreMap.getAll()); } }
输出结果:
{0=[12, 13]}
{1=[13]}
{0=[12, 13], 1=[13]}
相关文章推荐
- vue树形组件
- ACM—Number Sequence(HDOJ1005)
- layout、values和drawable屏幕自适应
- Android Bluetooth 蓝牙通信(二)
- build.gradle常见配置方式
- 【转】简析SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
- 【J2SE】——String、StringBuffer与StringBuilder
- requests源码分析
- 19、Power Query-快速分析各产品的销售情况
- serializable 类 XXXX 未声明类型为 long 的静态终态 serialVersionUID 字段
- vue-cli 中 使用vue-resource 输出后台数据
- build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)'
- UVA 1327 King's Quest(强联通+二分图)
- ios在UITableViewController里使用UISearchDisplayController报错"[UISearchResultsTableView dequeueReusableCel
- Vue中使用set方法过程的一个小发现
- JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer..Maven Java EE Configuration
- vuex构建笔记本应用学习
- soapUI通过groovy脚本设置超时时间
- 创建Qt Quick项目
- SonarQube官方文档翻译之Administration Guide(二)