【发布时间】:2013-06-27 08:37:39
【问题描述】:
我正在尝试通过对象将值插入到哈希映射中,并且我想检查这些值是否插入到哈希映射中。所以我正在使用这段代码,但在运行时我无法获得任何输出。
如何解决这个问题?
代码:
import java.util.*;
import java.io.*;
import java.lang.*;
public class TaskList
{
private static HashMap<Integer, Object[]> dataz = new HashMap<Integer,Object[]>();
private static HashMap<Integer, Object[]> screen_dataz = new HashMap<Integer,Object[]>();
public final static Object[][] longValues = {{"10", "kstc-proc", "10.10.10.10.10.","5","O"},{"11", "proc-lvk1", "12.1.2.","4","O"},{"13", "trng-lvk1", "4.6.1.","3","O"}};
private static String sl,pid,tid,mval,status;
public static void main(String args[])
{
addTask();
}
public static void addTask()
{
for (int k=0; k<longValues.length; k++)
{
screen_dataz.put(k,longValues);
}
Set mapSet = (Set) screen_dataz.entrySet();
Iterator mapIterator = mapSet.iterator();
while (mapIterator.hasNext())
{
Map.Entry mapEntry = (Map.Entry) mapIterator.next();
String keyValue = (String) mapEntry.getKey();
String value = (String) mapEntry.getValue();
System.out.println(value);
}
}
}
【问题讨论】:
-
在循环中你应该做
screen_dataz.put(k,longValues[k]);再看看你的HashMap你就会明白为什么了。 -
请使用泛型以避免因错误类型转换而导致的潜在错误。
-
99% 的时间使用 Object 是错误的。您一直使用 Object[] 在这种情况下,它们实际上似乎是 String[]
-
正如您之前的问题所建议的那样:Java 是一种 OOP 语言。如果您开始使用自定义类,您将更容易编写和维护代码。
Object、Object[]和Object[][]是非常糟糕的设计决策(在大多数情况下 - 肯定是你的)。
标签: java collections map hashmap