所以我有一个看起来像这样的文件:
1st 2nd nth
e1, v1, 1
e1, v3, 2
e1, v4, 4
e1, v5, 7
e2, v1, 1
., ., .
., ., .
., ., .
其中我希望第一列是hashmap的键(e1,或e2,或e3),值是一个名为“ratings”的ArrayList,我希望第二列的值(int)位于ArrayList的第n个索引中。
import java.util.*;
import java.io.*;
public class Setup
{
public static void Setup(String[] args)
{
String user;
int value, location;
//Create a Hashmap that holds a string key and an ArrayList value
HashMap<String, ArrayList<Integer>> userRatings = new HashMap<String, ArrayList<Integer>>();
try
{
BufferedReader bufferReader = new BufferedReader(new FileReader("Student list.txt")); //read from file
String line, sentence; //declare two string variables
String[] sData; //declare a string array (store the contents here)
line = bufferReader.readLine(); //Read the line
while (line != null) //While there is a line, do this:
{
line = bufferReader.readLine();
sData = line.split(", "); //Into the string array, enter individual values in the line split by the ", " characters
int iData[] = new int[sData.length]; //Create an int array the size of the string array
user = sData[0];
for (int i = 0; i <sData.length; i++) //fill the int array with the int-version of the string array
{
iData[i] = Integer.parseInt(sData[i]); //pass the strings as integers into the integer array
}
value = iData[1];
location = iData[2];
if(!userRatings.containsKey(user)) //The user does not have ratings.
{
ArrayList<Integer> ratings = new ArrayList<Integer>();
// ratings = userRatings.get(user);
for (int j = 0; j < 50; j++)
{
ratings.add(j);
}
System.out.println(user + " " + userRatings.get(user));
}
else //The user has ratings
{
userRatings.get(user).add(location,value);
System.out.println(user + " " + userRatings.get(user));
}
}
bufferReader.close();
} catch (FileNotFoundException e)
{
System.out.println("File does not exist or could not be found.");
}
catch (IOException e)
{
System.out.println("Can't read from file");
}
catch (NullPointerException e)
{
}
}
}
总而言之:文件第一列中的每个字符串在hashmap(userList)中都有自己的键,程序将检查它是否有这个键,如果没有键,它将创建一个新的arraylist作为这个键的值。arrayList将填充50个索引,其中它们将包含“0”。在此之后,arraylist将从文件中添加新的值,其中第二列中的整数将添加到第N列的相应值处。
我如何填充arraylist,以及我如何编辑它,以便如果我想在用户e6的第n个索引处添加一个新的整数,我可以?
当给定的键不存在于映射中时,您必须添加一个新的键值对
if(!userRatings.containsKey(user)) //The user does not have ratings.
{
ArrayList<Integer> ratings = new ArrayList<Integer>();
for (int j = 0; j < 50; j++) {
ratings.add(j);
}
userRatings.put(user, ratings); // place new mapping
System.out.println(user + " " + userRatings.get(user));
} else //The user has ratings
{
ArrayList<Integer> ratings = userRatings.get(user);
ratings.add(location,value); // Update your list with location and value
System.out.println(user + " " + userRatings.get(user));
}
idata[i]=integer.parseint(Sdata[i]);
鉴于您的文件内容,这将不起作用,它将抛出NumberFormatException
,因为v1无法解析为int。
相反,您可以执行以下操作:
value = Integer.parseInt(sData[1].trim().substring(1));
location = Integer.parseInt(sData[2].trim());
ArrayList<Integer> first = userRatings.get(e1);
ArrayList<Integer> second = userRatings.get(e2);
//Taking the smallest size will ensure that we don't get IndexOutOfBoundsException.
int length = first.size() < second.size() ? first.size() : second.size();
for(int iDx = 0; iDx < legth; iDx++){
//compare content
}
方法2
ArrayList<Integer> first = userRatings.get(e1);
ArrayList<Integer> second = userRatings.get(e2);
Arrays.equals(first.toArray(), second.toArray());
我在Java有一个源HashMap: 存储各种长度的关键字。我想遍历这个HashMap并计算出存储在映射的字符串部分中的ngram的长度,该字符串部分定义了每个关键字的文本。 使用这些数据,我想填充一个HashMaps的目标ArrayList: 结果是,ArrayList的索引对应于给定关键字的ngram大小减去1,即keywordNGrams(0)将接收unigrams,keywordNGram
我有一个hashmap,它包含一个arraylist作为值。我想检查其中一个ArrayList是否包含一个对象,然后从ArrayList中移除该对象。但是,怎么做? 我尝试过使用一些for循环,但是我得到了一个ConcurrentModificationException,并且我无法消除该异常。 我已经试过了:
本文向大家介绍jQuery 添加元素和删除元素的方法,包括了jQuery 添加元素和删除元素的方法的使用技巧和注意事项,需要的朋友参考一下 添加新的 HTML 内容 我们将学习用于添加新内容的四个 jQuery 方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被选元素之前插
在java中,我试图添加一对相加到一定数量的数组,我尝试的方法之一是在HashMap中创建一个双ArrayList。如果我在列表中添加1和2,我将得到3作为键。例如: 输出如下所示 如果我再加一对 但是我一直得到一个'方法不适用于HashMap类型 我也试过了 我想我可能需要先初始化更大的矩阵,但遗憾的是,我最终还是出现了同样的错误。
我有一个记录。 我的