无法创建地图地图

时间:2014-07-16 08:14:48

标签: java

我正在尝试在java中创建map的映射,以便通过读取unix命令行输出来显示所有pri状态。

这是我的代码

import java.io.*;
import java.util.StringTokenizer;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.*;
public class HelloWorld {
    public static void main(String args[]) {

        String s = null;

        try {

            Process p1 = Runtime.getRuntime().exec( new String[] {"asterisk", "-rx", "pri show spans"});            
            BufferedReader stdInput = new BufferedReader(new
            InputStreamReader(p1.getInputStream()));
            Map mainpri = new HashMap();
            BufferedReader stdError = new BufferedReader(new
            InputStreamReader(p1.getErrorStream()));
            int count = 1;
            while ((s = stdInput.readLine()) != null) {
                if(count > 2)
                {
                //Map pristatus = new HashMap();
                Hashtable<Integer, String> sourceone = new Hashtable<Integer,String>();
                HashMap<Integer, String>  pristatus = new HashMap(sourceone);

                System.out.println(s);
                 StringTokenizer st = new StringTokenizer(s);
                int nextcount = 1;
                 while (st.hasMoreTokens()) {
                      if(nextcount == 1){
                       pristatus.put(1, st.nextToken());

                       }
                      else if(nextcount == 2){
                       pristatus.put(2, st.nextToken());

                      }
                      else if(nextcount == 3){
                       pristatus.put(3, st.nextToken());
                      }
                      else  if(nextcount == 4){
                           pristatus.put(4, st.nextToken());

                      }
                      else{
                         pristatus.put(5, st.nextToken());

                      }

                    nextcount ++ ;  

                 }
                    mainpri.put(1,pristatus);
                    System.out.println(mainpri);

                }
                count ++;
            }

            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }

            System.exit(0);
        }
        catch (IOException e) {
            System.out.println("exception happened - here's what I know: ");
            e.printStackTrace();
            System.exit(-1);
        }
    }
}

生成pristatus地图后,我试图在mainpri地图中以键值的形式添加该值

但不是在上面的代码中添加数据总是

{1={1=PRI, 2=span, 3=1/0:, 4=Up,, 5=Active}}
{1={1=PRI, 2=span, 3=2/0:, 4=In, 5=Active}}
{1={1=PRI, 2=span, 3=3/0:, 4=In, 5=Active}}
{1={1=PRI, 2=span, 3=4/0:, 4=In, 5=Active}}

但我希望这个在

{1={1=PRI, 2=span, 3=1/0:, 4=Up,, 5=Active},
{2={1=PRI, 2=span, 3=2/0:, 4=In, 5=Active},
{3={1=PRI, 2=span, 3=3/0:, 4=In, 5=Active},
{4={1=PRI, 2=span, 3=4/0:, 4=In, 5=Active}}

我是python转为java开发人员,所以我无法弄清楚我读到的Hastable但是没有用。

请帮帮我。我可能做错了什么。

5 个答案:

答案 0 :(得分:1)

您应该更改此行:

mainpri.put(1,pristatus);

为:

mainpri.put(count, pristatus);

您想要更改地图密钥。

答案 1 :(得分:0)

初始化地图时尝试使用Collections.addAll方法

答案 2 :(得分:0)

您已将mainpri的密钥硬编码为1,您应该使用&#34; count&#34;变量而不是&#34; 1&#34;

mainpri.put(1,pristatus);

答案 3 :(得分:0)

正确指出问题出在这一行 - : 的 mainpri.put(1,pristatus); 你总是把价值放在关键1上, 而是用 - 替换它: mainpri.put(计数,pristatus);

答案 4 :(得分:0)

您需要将地图键值从1更改为计数值

<强> mainpri.put(1,pristatus)

<强> mainpri.put(计数,pristatus)