java 通过索引访问 hashmap 内部数组
java access hashmap internal array by index
我有一个 Map.Entry<File, int[]>
的形式:
/data/train/politics/p_0.txt, [0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]
/data/train/science/s_0.txt, [1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0]
/data/train/atheism/a_0.txt, [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
/data/train/sports/s_1.txt, [0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1]
我想将此数据放入以下形式的二维数组中:
double[][] features = new double[ GLOBO_DICT.size() ][ perceptron_input.size() ];
但我不希望该文件名(标签)包含在二维数组中。
我原以为像下面这样的东西可以解决问题,但现在我不太确定了。
//number of features, number of x, y, z
int size_of_globo_dict = GLOBO_DICT.size();
//number of instances
int NUM_INSTANCES = perceptron_input.size();
double[][] features = new double[ perceptron_input.size() ][ GLOBO_DICT.size() ];
for(int i = 0; i <= size_of_globo_dict; i++)
{
for(int j = 0; j <= NUM_INSTANCES; j++)
{
features[j][i] =
}
}
我需要能够通过索引访问内部 int 数组,该怎么做?
类似于'internatl_int_array.get( instance i)'
一种简单的方法是使用 for each 循环遍历 HashMap,例如:
for(Entry<File, int[]> entry : myMap.entrySet())
对于每个条目,获取值(int 数组)并将其存储在矩阵中。
当您转到下一个条目时,只需增加矩阵的行索引(在您的情况下为 i)。
这里有一个例子,根据你的问题调整一下:
Map<String,int[]> myMap = new HashMap();
int []x = {1,2,3,4};
int []y = {5,6,7,8};
int []z = {9,2,3,4};
myMap.put("X",x);
myMap.put("Y",y);
myMap.put("Z", z);
int i = 0;
int [][]matrix = new int[10][10];
for(Entry<String, int[]> entry : myMap.entrySet()){
int []a =entry.getValue();
for(int j = 0; j < a.length; j++){
matrix[i][j] = a[j];
}
i++;
}
我使用String作为Key类型,因为我们不关心key,只关心value。迭代哈希图,获取值(int 数组)并将这些值复制到矩阵中。每个条目代表矩阵中的新行。
我有一个 Map.Entry<File, int[]>
的形式:
/data/train/politics/p_0.txt, [0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]
/data/train/science/s_0.txt, [1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0]
/data/train/atheism/a_0.txt, [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
/data/train/sports/s_1.txt, [0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1]
我想将此数据放入以下形式的二维数组中:
double[][] features = new double[ GLOBO_DICT.size() ][ perceptron_input.size() ];
但我不希望该文件名(标签)包含在二维数组中。
我原以为像下面这样的东西可以解决问题,但现在我不太确定了。
//number of features, number of x, y, z
int size_of_globo_dict = GLOBO_DICT.size();
//number of instances
int NUM_INSTANCES = perceptron_input.size();
double[][] features = new double[ perceptron_input.size() ][ GLOBO_DICT.size() ];
for(int i = 0; i <= size_of_globo_dict; i++)
{
for(int j = 0; j <= NUM_INSTANCES; j++)
{
features[j][i] =
}
}
我需要能够通过索引访问内部 int 数组,该怎么做?
类似于'internatl_int_array.get( instance i)'
一种简单的方法是使用 for each 循环遍历 HashMap,例如:
for(Entry<File, int[]> entry : myMap.entrySet())
对于每个条目,获取值(int 数组)并将其存储在矩阵中。 当您转到下一个条目时,只需增加矩阵的行索引(在您的情况下为 i)。
这里有一个例子,根据你的问题调整一下:
Map<String,int[]> myMap = new HashMap();
int []x = {1,2,3,4};
int []y = {5,6,7,8};
int []z = {9,2,3,4};
myMap.put("X",x);
myMap.put("Y",y);
myMap.put("Z", z);
int i = 0;
int [][]matrix = new int[10][10];
for(Entry<String, int[]> entry : myMap.entrySet()){
int []a =entry.getValue();
for(int j = 0; j < a.length; j++){
matrix[i][j] = a[j];
}
i++;
}
我使用String作为Key类型,因为我们不关心key,只关心value。迭代哈希图,获取值(int 数组)并将这些值复制到矩阵中。每个条目代表矩阵中的新行。