Speicherung von Daten in Hashmap

Fjolle

Grünschnabel
Hallo zusammen,

ich soll eine Logfile Analyse an einem Logfile einer chinesischen Suchmaschine durchführen.

Die Logfile ist eine Text-Datei die, die Daten in den folgenden 4 Spalten enthält:

IP als Hash || Suchanfrage || Ranking und Klicks || Aufgerufene URL
6583834172867 || [????] || 9 1 || fo.perinetics.net/yi/a1833z4448.html

Ich bin jetzt soweit, dass ich die Daten spaltenweise einlese. Habe etwas rumüberlegt und gesucht und gedacht, dass vllt eine Realiserung über eine Hashmap sinnvoll wäre.

Nun habe ich gedacht, dass ich eine neue Klasse "Session" anlege und dort ein Objekt "IP" für die Klasse anlege.
Eine Session soll so definiert sein, dass solange ich die selbe IP einlese, es eine Session ist. Sobald es eine neue IP ist, ist diese Session damit beendet.

Außerdem dachte ich, dass ich eine weitere Klasse für die Suchanfrage anlege.

Die Hashmap könnte man evt so realiseren, dass ich die "IP" als key anlege und alle anderen Daten/Suchanfragen zu einer IP in einem hashset.

Dies ist das, was ich soweit habe.

Code:
package analyzer;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

public class LogfileAnalyzer {
	

	public static void savedata() {
		
		//Hashmap initialisieren
		HashMap<Integer, String> hm = new HashMap<Integer, String>();
		
		
	}
	
	
	//Datei zeilenweise lesen und ausgeben
	public static void filereader(String datName) {
		
		File log = new File(datName);
		
		if (!log.canRead() || !log.isFile())
			System.exit(0);
		
		BufferedReader in = null;
		try {
			in = new BufferedReader(new FileReader(datName));
			String zeile = null;
			while ((zeile = in.readLine()) != null) {
				System.out.println("Gelesene Zeile: " + zeile);
			}
		} catch (IOException e) {
			e.printStackTrace();
			
		} finally {
			if (in != null)
				try {
					in.close();
				} catch (IOException e) {
					
				}
		}
		
		
	}
	
	
	//Main-Methode
	public static void main(String args[]) {

		String dateiName = "logfile_uni.txt";
		filereader(dateiName);
	}
	
}

Außerdem natürlich die Session und Query Klasse

Code:
package analyzer;

public class Session {

	//Session Objekt ID anlegen
	Session id = new Session();
	
	//Standardkonstruktor
	Session() {

	}

}

Code:
package analyzer;

public class Query {
	
	Query clicks = new Query();

	//Standardkonstruktor
	public Query() {
		// TODO Auto-generated constructor stub
	}

}


Ich weiß nun aber leider nicht, wie ich meinen Plan tatsächlich umsetze. Finde überall nur Tutorials wo es um 2-3 Daten geht, aber nicht um eine unbestimmte Datenmenge.

Kann mir jemand bitte Starthilfe geben?
 

benhaze

Mitglied Platinum
deine HashMap könnte so aussehen:

Java:
Map<String,Set<Info>> hashmap = new HashMap<String,Set<Info>>();
*Info* könnte eine Klasse sein die folgende Infos bereithalten kann:
suchanfrage= [????],
ranking= 9 1,
url=fo.perinetics.net/yi/a1833z4448.html

Der erste Parameter der Map beschreibt den Typ des Keys, also z.B (String) 6583834172867.
Der zweite Parameter beschreibt den Typ des Values. Das könnte ein Set oder eine List sein.