变量的数据分析与处理及其具体性

时间:2015-03-23 22:25:35

标签: java excel

我有一个包含100K变量的variable_text文件(一些是唯一的,一些不是)和一个列中包含(唯一)变量的excel文件,另一列中它们各自的具体值。我已经编写了一些代码来从文本文件中读取变量,并从excel文件中搜索它们的具体值,并将结果吐出到另一个result_text文件中。

我的问题是我需要使用适当的数据结构来存储变量及其具体性,并计算从variable_text文件重复变量的频率。我看过HashTables和HashMaps,但不知道我是否应该从这些中选择,或者是否有另一种可行的选择。

此数据结构必须代表一种表格或地图:

变量|频率|具体性

1 个答案:

答案 0 :(得分:0)

以下是一些可以帮助您的代码,我建议您使用像这样的

public static void main(String[] args)
{
Map <String, Data> map = new HashMap <String, Data>();

String [] variables={"variable1", "variable2", "variable3", "variable4", "variable4", "variable1","variable1"};
int Concreteness=5;//for this example every variable will have the same cncreteness

for(int i=0; i<variables.length;i++)
{
    Data variable_exists=map.get(variables[i]);

    if(variable_exists!=null)
    variable_exists.setFrecuency(variable_exists.getFrecuency()+1);
    else
    map.put(variables[i], new Data(Concreteness,1));

}

for (Map.Entry<String, Data> entry : map.entrySet()) 
{ System.out.println("variable = " + entry.getKey() + ", Frecuency = " + entry.getValue().getFrecuency()+ ", Concreteness = " + entry.getValue().getConcreteness()); }
}

此示例的输出为

variable = variable4,Frecuency = 2,Concreteness = 5

variable = variable1,Frecuency = 3,Concreteness = 5

variable = variable2,Frecuency = 1,Concreteness = 5

variable = variable3,Frecuency = 1,Concreteness = 5

这是我使用的数据类

public class Data
{
    private int frecuency;
    private int Concreteness;

    Data (int Concreteness, int frecuency)
    {
    setFrecuency(frecuency);
    setConcreteness(Concreteness);
    }
    public int getFrecuency()
    {
    return frecuency;
    }

    public void setFrecuency(int frecuenxy)
    {
    this.frecuency = frecuenxy;
    }

    public int getConcreteness()
    {
    return Concreteness;
    }

    public void setConcreteness(int Concreteness)
    {
    this.Concreteness = Concreteness;
    }
}