2016-03-28 10 views
-4

Wie entferne ich den doppelten Eintrag aus diesem Code, wo ein doppelter Eintrag eine Sitzung sein würde, die die gleiche IP-Adresse wie andere Sitzungen hat?Java entfernen doppelten Eintrag von IHTTPStreersession für gemeinsame IP-Adresse

Iterator<IHTTPStreamerSession> iterHttp = httpSessions.iterator(); 
while(iterHttp.hasNext()) 
{ 
    IHTTPStreamerSession httpSession = iterHttp.next(); 
    if (httpSession == null) 
     continue; 

    ret.append("<HTTPSession>"); 
    ret.append("<IpAddress>"+httpSession.getIpAddress()+"</IpAddress>"); 
    ret.append("<TimeRunning>"+httpSession.getTimeRunningSeconds()+"</TimeRunning>"); 

    ret.append("</HTTPSession>"); 
} 

Ich brauche nur 1 Eintrag für jeden <IpAddress>

+0

Ich sehe nicht, wie das Sinn macht. Sie durchlaufen die gesamte Sitzung und generieren einen '' Block pro Sitzung. In diesem Block extrahieren Sie die eindeutige IP-Adresse für diese Sitzung. Warum sollten Sie für alle HttpSessions dieselbe IP-Adresse festlegen? – pczeus

+0

Nein, dieser Code generiert mehr als 1 HTTPSession-Eintrag mit derselben IP-Adresse und ich muss dies filtern und nur 1 HTTPSession pro IP-Adresse anzeigen – user1505698

Antwort

0

erzeugen Sie eine Set-Prüfung benutzen können, wenn eine IP-Adressen, die einen zuvor hinzugefügten Eintrag entsprechen. Etwas wie dieses:

Set<String> ips = new HashSet(); 
Iterator<IHTTPStreamerSession> iterHttp = httpSessions.iterator(); 

while(iterHttp.hasNext()){ 
    IHTTPStreamerSession httpSession = iterHttp.next(); 
    if (httpSession == null) 
     continue; 

    String ip = httpSession.getIpAddress(); 
    if(!ips.contains(ip)){ 
     ret.append("<HTTPSession>"); 
     ret.append("<IpAddress>"+ ip +"</IpAddress>"); 
     ret.append("<TimeRunning>"+httpSession.getTimeRunningSeconds()+"</TimeRunning>"); 
     ret.append("</HTTPSession>"); 

     ips.add(ip); 
    } 
} 
Verwandte Themen