0 0

vector和hashMap的结合使用,比较棘手!5

我自己创建了几个hashMap,然后想把这些map放到vector中,可是只要一添加map到vector中,就会报空指针,也不知道是怎么出来的,我也用上了泛型,哪位大哥大姐知道,给看看问题在哪,下面是代码!
import java.util.HashMap;
import java.util.Vector;

public class MapTst {

static Vector<HashMap<Integer, String>> vec=null;

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<String> vecstr=null;
MapTst.initMap();
for(int i=1;i<=9;i++){
String str="";
boolean  rtn = recursiveFind(1,vec,1,str);
if(rtn==true) vecstr.add(str);
}
System.out.println(vecstr.size());
}

static void initMap(){
HashMap<Integer, String> map1 = new HashMap<Integer,String>();
map1.put(1,"dxd");
map1.put(2,"wlp");
map1.put(3,"gj");
map1.put(4,"chenxi");
map1.put(5,"tiananmen");
map1.put(6,"renmin");
map1.put(7,"zuqiu");
map1.put(8,"fengsaka");
map1.put(9,"lanqiu");
//Vector  vec = null;
// vec.add(map1);
vec.add(0,map1);
//vec.addElement(map1);

HashMap<Integer, String> map2 = new HashMap<Integer,String>();
map2.put(1,"gugong");
map2.put(2,"yonghegong");
map2.put(3,"dianmen");
map2.put(4,"xizhimen");
map2.put(5,"jianguomen");
map2.put(6,"chaoyangmen");
map2.put(7,"dongzhimen");
map2.put(8,"qianmen");
map2.put(9,"fuchengmen");
map2.put(10,"deshengmen");

// vec.add(map2);
vec.addElement(map2);
HashMap<Integer, String> map3 = new HashMap<Integer,String>();
map3.put(1,"1");
map3.put(2,"2");
map3.put(3,"3");
map3.put(4,"4");
map3.put(5,"5");
map3.put(6,"6");
map3.put(7,"7");
map3.put(8,"8");
map3.put(9,"9");
map3.put(9,"10");

// vec.add(map3);
vec.addElement(map3);

HashMap<Integer, String> map4 = new HashMap<Integer,String>();
map4.put(1,"a");
map4.put(2,"b");
map4.put(3,"c");
map4.put(4,"d");
map4.put(5,"e");
map4.put(6,"f");
map4.put(7,"g");
map4.put(8,"h");
map4.put(9,"i");
map4.put(9,"j");


HashMap<Integer, String> map5 = new HashMap<Integer,String>();
map5.put(1,"11");
map5.put(2,"22");
map5.put(3,"33");
map5.put(4,"44");
map5.put(5,"55");
map5.put(6,"66");
map5.put(7,"77");
map5.put(8,"88");
map5.put(9,"99");
map5.put(9,"111");

vec.addElement(map4);
vec.addElement(map5);
// vec.add(map4);
// vec.add(map5);
//vec.a
}

static boolean recursiveFind(Integer k, Vector<HashMap<Integer, String>> vec, Integer i,String str){
if(i>vec.size())return false;

if(vec.get(i).containsKey(k))
{
str += k.toString();
recursiveFind(++k,vec,++i,str);
}
else
{
return false;
}

return true;
}

}


我用了add,addElement都不行,不知道为何?  请大家看看,我主要是想用这个东西来实现后面的递归算法,郁闷啊!分开用vector和hashMap都没问题,居然结合着用就报这个怪问题!
问题补充:
呵呵,我搞定了,确实是大家说的那个原因,我是想实现一个算法:
ABCDE共5个位置,如果A位置出现0的话,那么B位置就必须是1,C位置必须是2,类推。
后来用了个递归来实现的,不知道大家有没有更好的方法,按照我的算法,也能实现,不过是递归,不太好!

问题补充:
这里怎么结贴啊,有没有像csdn那样的,我想结贴,散分!
2008年6月29日 14:41

5个答案 按时间排序 按投票排序

0 0

Vector vec = null 要先new 一个Vector

2008年7月01日 10:27
0 0

vector没有初始化..

Vector<String> vecstr=null;

Vector<String> vecstr=new Vector<String>();

不过你这样也放不进去HashMap.
写成:
Vector<Map> vecstr=new Vector<Map>();

2008年6月30日 10:08
0 0

1 2 楼正解。
vec 没初始化,你往里面add 当然报错。

2008年6月29日 19:59
0 0

static Vector<HashMap<Integer, String>> vec=null;

改成

static Vector<HashMap<Integer, String>> vec=new Vector<HashMap<Integer, String>>();

2008年6月29日 15:20
0 0

你的vec还没有初始化啊

2008年6月29日 15:17

相关推荐

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...

    比较分析Vector、ArrayList和hashtable hashmap数据结构

    比较分析Vector、ArrayList和hashtable hashmap数据结构

    比较Vector、ArrayList和hashtable hashmap

    在使用时,另一个线程改变了 Vector,那么将会抛出 ConcurrentModificationException 异常。因此,如果多线程并发访问 Vector,通常需要通过 synchronized 关键字进行同步控制。 HashMap 类 HashMap 是一个散列表,...

    Rust 集合类型String, Vector, HashMap 使用详解

    ### Rust 集合类型String, Vector, HashMap 使用详解 #### 一、String 类型详解 **String** 是 Rust 中非常重要的数据结构之一,用于表示可变长度的 UTF-8 编码的文本字符串。Rust 语言设计时充分考虑了 Unicode ...

    HashMap介绍和使用

    ### HashMap介绍和使用详解 #### 一、HashMap的数据结构 HashMap是Java集合框架的一个重要组成部分,它实现了Map接口,能够存储键值对映射。在Java编程语言中,最基本的数据结构有两种:数组和引用(模拟指针)。...

    Biblioteca:将Java与数据库和HashMap结合使用的CRUD示例!

    在本项目中,"Biblioteca:将Java与数据库和HashMap结合使用的CRUD示例!" 是一个关于如何使用Java编程语言实现一个图书馆管理系统的案例。这个系统涉及到数据库操作和数据结构HashMap的使用,用于执行创建(Create)...

    HashMap和HashTable的区别和不同

    为了在多线程环境中安全地使用`HashMap`,开发者需要自己负责同步,例如使用`Collections.synchronizedMap(new HashMap,V&gt;())`创建线程安全的`HashMap`实例。 #### 2. 允许null值 - **HashTable**: 不支持`null`键...

    C++hashmap的使用实例

    在C++编程中,`hashmap`通常指的是`std::unordered_map`,它是一个关联容器,提供了基于哈希表的键值对存储。这个数据结构允许我们以接近常数时间的复杂度进行插入、查找和删除操作,极大地提高了程序的执行效率。...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...

    Hashtable和HashMap区别

    `Hashtable`提供了`contains()`、`containsValue()`和`containsKey()`等方法,而`HashMap`不提供`contains()`方法,而是使用`containsKey()`和`containsValue()`来替代。 #### 5. 初始容量和加载因子 `Hashtable`...

    Hashtable和HashMap的区别:

    - **HashMap**:允许使用 `null` 键和 `null` 值。当调用 `get()` 方法并返回 `null` 时,可能表示两种情况:一是该键不存在于 `HashMap` 中;二是该键对应的值确实为 `null`。 - **Hashtable**:不允许 `null` 键...

    Hashmap快速比较类

    利用java里面Hashmap类的快速查找算法,比较两个文件差异内容,数万条数据只要几毫秒,当然不能跟脚本语言和C++速度进行比较了

    hashMap和hashTable的区别

    - **HashMap**:允许使用 `null` 键和 `null` 值。 - **HashTable**:不允许使用 `null` 键或 `null` 值。如果尝试将 `null` 作为键或值插入 `HashTable`,将会抛出 `NullPointerException`。 2. **线程安全性**...

    hashmap实现原理

    通过`hashCode()`和`equals()`的合理使用,以及数组和链表的结合,HashMap实现了高效的键值对存储和查找。了解这些实现细节对于优化代码性能和避免潜在问题至关重要。在实际编程中,应充分考虑哈希冲突的处理、负载...

    HashMap总结

    1. 使用迭代器遍历:使用 iterator() 方法取得 HashMap 的迭代器,然后使用 hasNext() 和 next() 方法遍历 HashMap 中的元素。 2. 使用 foreach 遍历:使用 foreach 语句遍历 HashMap 中的元素。 HashMap 的常用...

    hashmap 实例

    在本文中,我们将深入理解 HashMap 的实例及其工作原理,并与其他数据结构如 Vector、ArrayList、LinkedList 和 Hashtable 进行对比。 首先,我们来看 HashMap 的实例代码: ```java HashMap hashmap = new ...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    Java中的容器类是Java集合框架的重要组成部分,它们用于存储和管理数据。...在实际应用中,通常推荐使用非同步的实现,如ArrayList和HashMap,因为它们的性能更高,然后根据需要在多线程场景下添加同步机制。

    hashmap面试题_hashmap_

    HashMap占用的内存包括数组和Entry对象,Entry对象包含键值对和指向下一个Entry的引用。当内存不足时,可能会触发垃圾回收,甚至出现OOM错误。 七、面试实战 面试中,可能会被问及HashMap的性能优化、内存占用分析...

    hashtable和hashmap的区别

    选择使用`Hashtable`还是`HashMap`取决于具体的应用场景和需求: - 如果应用程序需要线程安全且可以接受一定的性能损耗,则可以选择`Hashtable`。 - 对于大多数现代应用而言,推荐使用`HashMap`并在必要时采取适当...

    hashmap使用实例

    HashMap是Java编程语言中的一种重要数据结构,它在Android开发中同样被广泛使用。HashMap属于集合框架的一部分,提供了键值对(key-value pair)的存储功能。在这个实例中,我们将深入探讨HashMap的工作原理、基本...

Global site tag (gtag.js) - Google Analytics