java hashmap与数组操作问题
publicclasstest1{staticFileaFile=newFile("Source");staticStringaString=null;publicsta...
public class test1 {
static File aFile = new File("Source");
static String aString = null;
public static void main(String[] args) throws IOException {
BufferedReader aReader = new BufferedReader(new InputStreamReader(new FileInputStream("Source")));
while ((aString = aReader.readLine()) != null) {
String [] aArray = aString.split(":");
HashMap<String, Integer> aMap = new HashMap<String, Integer>();
for(int i=0;i<aArray.length/2;i++){
String key = aArray[2*i];
if(aMap.containsKey(key)){
aMap.put(key,aMap.get(key)+Integer.parseInt(aArray[2*i+1]));
}else{
aMap.put(key,Integer.parseInt(aArray[2*i+1]));
}
System.out.println(aMap.entrySet());
}
}
aReader.close();
}
}
source 文件类似于:
A:34
B:23
C:33
D:23
A:4
E:5
问题是为什么:这些相同的键能写进map中 aMap.containsKey(key)不被执行----------------请求大侠帮忙 ,小弟超级大菜鸟 展开
static File aFile = new File("Source");
static String aString = null;
public static void main(String[] args) throws IOException {
BufferedReader aReader = new BufferedReader(new InputStreamReader(new FileInputStream("Source")));
while ((aString = aReader.readLine()) != null) {
String [] aArray = aString.split(":");
HashMap<String, Integer> aMap = new HashMap<String, Integer>();
for(int i=0;i<aArray.length/2;i++){
String key = aArray[2*i];
if(aMap.containsKey(key)){
aMap.put(key,aMap.get(key)+Integer.parseInt(aArray[2*i+1]));
}else{
aMap.put(key,Integer.parseInt(aArray[2*i+1]));
}
System.out.println(aMap.entrySet());
}
}
aReader.close();
}
}
source 文件类似于:
A:34
B:23
C:33
D:23
A:4
E:5
问题是为什么:这些相同的键能写进map中 aMap.containsKey(key)不被执行----------------请求大侠帮忙 ,小弟超级大菜鸟 展开
3个回答
展开全部
public class test1 {
static File aFile = new File("Source");
static String aString = null;
public static void main(String[] args) throws IOException {
BufferedReader aReader = new BufferedReader(new InputStreamReader(
new FileInputStream("/home/eagle/Source")));
HashMap<String, Integer> aMap = new HashMap<String, Integer>();//写到这里就是初始化一次aMap的意思
while ((aString = aReader.readLine()) != null) {
String[] aArray = aString.split(":");
//containsKey(Object key)这个api的意思是如果此映射包含对于指定键的映射关系,则返回 true。
//在这里你只是初始化了个aMap 而它里面没有数据,当然 aMap.containsKey(key)返回的是false了,加入我加一条数据就能执行一次了,当然这里的问题主要是你的HashMap<String, Integer> aMap = new HashMap<String, Integer>();的问题,把这个在每次读文件是不要初始化了,只要初始化一次就可以
//aMap.put("A", 11);
for (int i = 0; i < aArray.length / 2; i++) {
String key = aArray[2 * i];
System.out.println(key);
if (aMap.containsKey(key)) {
aMap.put(key,
aMap.get(key) + Integer.parseInt(aArray[2 * i + 1]));
} else {
aMap.put(key, Integer.parseInt(aArray[2 * i + 1]));
}
System.out.println(aMap.entrySet());
}
}
aReader.close();
}
}
static File aFile = new File("Source");
static String aString = null;
public static void main(String[] args) throws IOException {
BufferedReader aReader = new BufferedReader(new InputStreamReader(
new FileInputStream("/home/eagle/Source")));
HashMap<String, Integer> aMap = new HashMap<String, Integer>();//写到这里就是初始化一次aMap的意思
while ((aString = aReader.readLine()) != null) {
String[] aArray = aString.split(":");
//containsKey(Object key)这个api的意思是如果此映射包含对于指定键的映射关系,则返回 true。
//在这里你只是初始化了个aMap 而它里面没有数据,当然 aMap.containsKey(key)返回的是false了,加入我加一条数据就能执行一次了,当然这里的问题主要是你的HashMap<String, Integer> aMap = new HashMap<String, Integer>();的问题,把这个在每次读文件是不要初始化了,只要初始化一次就可以
//aMap.put("A", 11);
for (int i = 0; i < aArray.length / 2; i++) {
String key = aArray[2 * i];
System.out.println(key);
if (aMap.containsKey(key)) {
aMap.put(key,
aMap.get(key) + Integer.parseInt(aArray[2 * i + 1]));
} else {
aMap.put(key, Integer.parseInt(aArray[2 * i + 1]));
}
System.out.println(aMap.entrySet());
}
}
aReader.close();
}
}
展开全部
呵呵,关于java中map的用法,完全可以上baidu搜索,这样来得快多了
其实map是解决键/值就是key/value而存在的,其中key是不能重复的,如果有重复,不会报错,只是会覆盖前面相同key的值。 key是一个数 value随便一个Object就可以 可以是数组
其实map是解决键/值就是key/value而存在的,其中key是不能重复的,如果有重复,不会报错,只是会覆盖前面相同key的值。 key是一个数 value随便一个Object就可以 可以是数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
map里面键不能相同
追问
真的写进去了 不信您试试 只不过是一行一行写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询