当前位置: 首页 > 知识库问答 >
问题:

使用文本文件中的哈希表表示内存[关闭]

金瑞
2023-03-14

我有一个项目,我需要在Java创建一个内存管理程序,我有文本文件,但不知道从哪里开始。我已经熟悉了Java中的分裂()方法,但基本上我希望索引作为键,后面的一切作为值。

这是文本文件,因为它很大AF:https://pastebin.com/Q4whQHxW

代码:


String[] temp;
temp = data.split("\n"); //assume data is the string that contains the text 
//doc contents
String[][] temp2 = new String[temp.length][];

for(int i = 0; i < temp.length; i++) {
    temp2[i] = temp[i].split("( )");
}
for(int i = 0; i < temp2.length; i++) {
    for(int j = 1; j < temp2[i].length; j++)
        memoryPhysical.put(Integer.parseInt(temp2[i][0]),temp2[i][j]);
}
System.out.println(memoryPhysical);

共有1个答案

屈畅
2023-03-14

可以将Map用于键值。如果您对使用Map有任何限制,请让我知道写一个数组示例。下面的代码显示了如何使用Map:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class App {
    public static void main(String[] args) {

        String text = "0 96\n" +
                "1 29\n" +
                "2 304\n" +
                "3 561\n" +
                "4 742\n" +
                "5 621\n" +
                "6 620\n"+
                "11605 sub %14922, 12566\n" +
                "11606 mov %15653, %12958";

        List<HashMap<Integer, String>> items = new ArrayList<>();

        String[] temp = text.split("\n");
        for (int i = 0; i < temp.length; i++) {
            items.add(convertALineToMap(temp[i]));
        }
        System.out.println(items);
    }

    private static HashMap<Integer, String> convertALineToMap(String s) {
        int splitIndex = s.indexOf(" ");
        String key = s.substring(0, splitIndex);
        String value = s.substring(splitIndex);

        HashMap<Integer, String> result = new HashMap<>();
        result.put(Integer.parseInt(key), value);
        return result;
    }
}

输出:

[{0=96}、{1=29}、{2=304}、{3=561}、{4=742}、{5=621}、{6=620}、{11605=sub  922、12566}、{11606=mov  653、958}]

 类似资料:
  • 我想使用链接和链表实现我自己的哈希表,但我很难弄清楚如何在main方法中使用实现。我需要读取一个逗号分隔的数据文件和存储名称作为键和两个浮点作为一个值。我知道我需要使用面向对象编程,但我有一个困难的时间访问我的数据使用我的实现。 下面是我的代码:public class LinkedListHash{ 任何改进代码的方法都是有帮助的。请记住,我不是一个非常有经验的程序员,所以我为任何可怕的错误道歉

  • 问题内容: 在Java中,如果我创建一个并将N个元素放入其中,它将占用多少内存?如果依赖于实现,那么什么才是好的“猜测”? 问题答案: 编辑; 噢,天哪,我是个白痴,我提供了HashMap的信息,而不是HashTable的信息。 但是,检查后,出于内存目的,实现是相同的。 这取决于您的VM的内部内存设置(项目的包装,32位或64位指针以及字对齐/大小),并且不是由Java指定的。 可以在这里找到有

  • 我正在尝试使用 fwrite 将哈希表写入 C 文件并使用 fread 读取它。我有这个结构: 当我使用恐惧时,我有 和 fwrite: 但是,我无法在读写后正确访问数据。问题是什么?

  • 简介 本章中,我会讲解用于表示数据关联的关联表和哈希表。关联的数据是由键和值组成的序对,值由键唯一确定的。表1显示了书和作者构成的配对。书籍可以确定作者,反之由作者确定书籍则不可,这是因为一个作者可能会写很多本书。表1中,由于P. Graham和L.Carroll分别写了两本书,因此他们的书无法被作者的名字唯一确定。 表1:作者和书 Author Book P. Graham On Lisp P.

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加

  • 请帮助选择如何存储消息: 1) 2) SET似乎比LIST更容易使用,但Redis会在每条消息中存储字段名,从而使内存使用量增加一倍吗?