gpt4 book ai didi

java - 增加 HashMap 中的单个值

转载 作者:行者123 更新时间:2023-12-01 09:55:11 24 4
gpt4 key购买 nike

所以我完全被我的 java 课的家庭作业困住了。在其中,我需要编写一个程序来分析 Web 服务器的日志文件,以确定哪些计算机最常尝试访问该 Web 服务器。我选择使用映射来跟踪与其一起运行的文件,以便用整数值保存每个唯一地址,每次代码找到重复的 IP 地址时,该整数值都会增加。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class LogTester
{
public static void main(String[] args)
{
int individualCounter = 0;
int ipcounter = 0;
Map<String, Integer> ipCheck = new HashMap<String, Integer>();
System.out.println("Enter a log file to be analyzed");
Scanner ui = new Scanner(System.in);
String filename = ui.nextLine();
File name = new File(filename);
try
{
Scanner dataStore = new Scanner(name);
while(dataStore.hasNextLine())
{
//get the entire line from the log file
String line = dataStore.nextLine();

//find the location of the word "client", then move 7 more spaces (see log file)
int subscriptOfClient = line.indexOf("client");
String s1 = line.substring(subscriptOfClient + 7);
//we now have a smaller string
//this string begins with the IP address
//se we find the ending bracket and extra the ip
int subscriptOfBracket = s1.indexOf("]");
String s2 = s1.substring(0, subscriptOfBracket);
ipcounter++;
ipCheck.put(s2, individualCounter++);

//print out the IP(in the assignment, put this into a map)
}
System.out.println("Found " + ipcounter + " unique IP addresses.");
System.out.println("The most suspicious are: ");
for(String key : ipCheck.keySet()){
System.out.println(key);
}
}
catch (FileNotFoundException e)
{
System.out.println("Could not open that file");
}
}
}

我面临的问题是我不知道如何增加每个单独的 IP 地址的值,以便我稍后可以比较它们以找出三个最常见的 IP 地址(我已经可以处理的事情)。通过我的 individualCounter 变量,我希望能够以某种方式将其转化为整数值,但就目前情况而言,由于我的编码非常糟糕,它始终与 ipcounter 相同。

我正在查找的示例是:77.46.30.42 出现 59 次,207.42.179.85 出现 46 次,85.114.128.137 出现 19 次。

我的一位同学建议我尝试设置,但我觉得这并不能真正帮助我更接近,因为 map 已经检查了重复项。

最佳答案

你可以这样做:

if(ipCheck.containsKey(s2)){
ipCheck.put(s2, ipCheck.get(s2)+1);
}else{
ipCheck.put(s2, 1);
}

它的作用是检查 IP 是否已在映射中,如果是,则获取该 IP 的先前计数并将其加一,如果不存在,则将其添加到映射中并设置计数到 1。

关于java - 增加 HashMap 中的单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37291280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com