Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内部哈希表覆盖_Java_String_Hashmap - Fatal编程技术网

Java 内部哈希表覆盖

Java 内部哈希表覆盖,java,string,hashmap,Java,String,Hashmap,我正在处理哈希表。在这个哈希表中,我想要形成哈希表,但是我的外部哈希表的值被替换了 哈希表1[键,哈希表[键,值]] 我可以在不覆盖的情况下获取外部哈希表键,但可以替换内部哈希表值 import java.io.*; import java.util.*; import com.sridhar.util.*; public class MyTokenizerDemo { public static void main(String[] args) throws IOExceptio

我正在处理哈希表。在这个哈希表中,我想要形成哈希表,但是我的外部哈希表的值被替换了

哈希表1[键,哈希表[键,值]]

我可以在不覆盖的情况下获取外部哈希表键,但可以替换内部哈希表值

 import java.io.*;
 import java.util.*;
 import com.sridhar.util.*;

 public class MyTokenizerDemo 
 {
public static void main(String[] args) throws IOException
{
    Hashtable ht=new Hashtable();
    Hashtable ht1=new Hashtable();
    Hashtable ht2=new Hashtable();
    File f = new File("E:/rum/format.txt");
    FileReader fr = new FileReader(f);
    BufferedReader br = new BufferedReader(fr);
    String s;
    while((s=br.readLine())!=null)
    {
        ArrayList aList = (ArrayList)StringUtils.myTokenizer(s,"~!~");
        for(int i=0;i<aList.size();i++)
        {
            ArrayList aList1 = (ArrayList)StringUtils.myTokenizer((String)aList.get(i),"$#$");
            //System.out.println("==>"+aList1.get(0)+"<==");
            ArrayList aList2 = (ArrayList)StringUtils.myTokenizer((String)aList1.get(1),"~$~");
            //System.out.println("====>"+aList2+"<=====");
            for(int j=0;j<aList2.size();j++)
            {
                ArrayList as = (ArrayList)StringUtils.MyTokenizer((String)aList2.get(j),"#$#");
                if(as!=null)
                {
                String innerkey = (String)as.get(0);
                String innervalue = (String)as.get(1);
                ht2.put(innerkey,innervalue);
                }
            }
        ht1.put(aList1.get(0),ht2);
        }
    }
     System.out.println(ht1);
   } 
import java.io.*;
导入java.util.*;
导入com.sridhar.util.*;
公共类MyTokenizerDemo
{
公共静态void main(字符串[]args)引发IOException
{
Hashtable ht=新的Hashtable();
Hashtable ht1=新的Hashtable();
Hashtable ht2=新的Hashtable();
文件f=新文件(“E:/rum/format.txt”);
FileReader fr=新的FileReader(f);
BufferedReader br=新的BufferedReader(fr);
字符串s;
而((s=br.readLine())!=null)
{
ArrayList aList=(ArrayList)StringUtils.myTokenizer(“~!~”);

对于(int i=0;i修改代码的lin
ht1.put(aList1.get(0),ht2);
as
ht1.put(aList1.get(i),ht2);


调用asList1时,get(0)always键将相同,因此您的数据将被覆盖

我在这里犯了一个简单的错误!!for循环中的实例化使值保持活动状态而不是被覆盖!!谢谢大家!!下面是代码

import java.io.*;
import java.util.*;
import com.sridhar.util.*;

public class MyTokenizerDemo 
{
public static void main(String[] args) throws IOException
{
Hashtable ht=new Hashtable();
Hashtable ht1=new Hashtable();
Hashtable ht2=new Hashtable();
File f = new File("E:/rum/format.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s;
while((s=br.readLine())!=null)
{
    ArrayList aList = (ArrayList)StringUtils.myTokenizer(s,"~!~");
    for(int i=0;i<aList.size();i++)
    {
        ht2 = new Hashtable();   //Instantiating inside the loop makes to work perfect :)
        ArrayList aList1 = (ArrayList)StringUtils.myTokenizer((String)aList.get(i),"$#$");
        //System.out.println("==>"+aList1.get(0)+"<==");
        ArrayList aList2 = (ArrayList)StringUtils.myTokenizer((String)aList1.get(1),"~$~");
        //System.out.println("====>"+aList2+"<=====");
        for(int j=0;j<aList2.size();j++)
        {
            ArrayList as = (ArrayList)StringUtils.MyTokenizer((String)aList2.get(j),"#$#");
            if(as!=null)
            {
            String innerkey = (String)as.get(0);
            String innervalue = (String)as.get(1);
            ht2.put(innerkey,innervalue);
            }
        }
    ht1.put(aList1.get(0),ht2);
    }
}
 System.out.println(ht1);
}
import java.io.*;
导入java.util.*;
导入com.sridhar.util.*;
公共类MyTokenizerDemo
{
公共静态void main(字符串[]args)引发IOException
{
Hashtable ht=新的Hashtable();
Hashtable ht1=新的Hashtable();
Hashtable ht2=新的Hashtable();
文件f=新文件(“E:/rum/format.txt”);
FileReader fr=新的FileReader(f);
BufferedReader br=新的BufferedReader(fr);
字符串s;
而((s=br.readLine())!=null)
{
ArrayList aList=(ArrayList)StringUtils.myTokenizer(“~!~”);

对于(int i=0;ioops!!我的密钥正在正确更改,但我无法获取密钥,ht2的值将被正确覆盖…同样的逻辑也适用于那里,您需要将字符串innerkey=(String)更改为.get(0);字符串innervalue=(String)as.get(1);将字符串innerkey=(String)as.get(j);字符串innervalue=(String)as.get(j+1);看在James Gosling的份上,停止使用Hashtable,开始使用泛型。这段代码大约在2004年就过时了。cool brian:)在此,我肯定会这样做:)我建议您使用参数化泛型类型和增强型For循环。