2012-12-16 2 views
1

나는 공항에 승객 명단이 있으며, 각 승객은 목적지가 있으며, 나는 더 자주 발생하는 목적지를 알고 싶다.개체 목록에서 더 자주 발생하는 특성을 어떻게 알 수 있습니까?

목록은 java의 ArrayList입니다. (의사 코드)의 라인을 따라

+2

입니다. 진지하게,이 숙제는 무엇입니까? –

+0

숙제가 아니라 프로젝트에 대한 것이지만 중요합니까? –

+0

카운터를 사용해 보았습니다. 그러나 문제는 운명 수가 무작위이므로 해결할 수 없습니다. –

답변

0

보십시오. 여기

package com.rais; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import com.rais.vo.Passenger; 

/** 
* @author Rais.Alam 
* @date Dec 17, 2012 
*/ 
public class Client 
{ 

    public static void main(String[] args) 
    { 
     Client client = new Client(); 

    Passenger p1 = new Passenger("A", "USA"); 
    Passenger p2 = new Passenger("B", "USA"); 
    Passenger p3 = new Passenger("C", "UK"); 
    Passenger p4 = new Passenger("D", "UK"); 
    Passenger p5 = new Passenger("E", "UK"); 
    Passenger p6 = new Passenger("F", "UK"); 

    List<Passenger> passengers = new ArrayList<Passenger>(); 
    passengers.add(p1); 
    passengers.add(p2); 
    passengers.add(p3); 
    passengers.add(p4); 
    passengers.add(p5); 
    passengers.add(p6); 

    System.out.println(client.getMostVistedDestination(passengers)); 

} 

public String getMostVistedDestination(List<Passenger> passengers) 
{ 

    Map<String, Integer> tempMap = new HashMap<String, Integer>(); 

    int maxCount = 0; 
    String dest = ""; 

    for (Passenger passenger : passengers) 
    { 
     int count = 1; 
     if (tempMap.containsKey(passenger.getDestination())) 
     { 
      count = tempMap.get(passenger.getDestination()) + 1; 
      if (maxCount < count) 
      { 
       maxCount = count; 
       dest = passenger.getDestination(); 
      } 

     } 
     else if (maxCount == 0) 
     { 
      maxCount = count; 
      dest = passenger.getDestination(); 

     } 

     tempMap.put(passenger.getDestination(), count); 

    } 

    return dest; 

} 

} 

는 대답은 파리입니다 Passenger.java

package com.rais.vo; 

/** 
* @author Rais.Alam 
* @date Dec 17, 2012 
*/ 
public class Passenger 
{ 
    private String name; 
    private String destination; 

    /** 
    * @param name 
    * @param destination 
    */ 
    public Passenger(String name, String destination) 
    { 
     super(); 
     this.name = name; 
     this.destination = destination; 
    } 

    /** 
    * @return the name 
    */ 
    public String getName() 
    { 
     return name; 
    } 

    /** 
    * @param name 
    *   the name to set 
    */ 
    public void setName(String name) 
    { 
     this.name = name; 
    } 

    /** 
    * @return the destination 
    */ 
    public String getDestination() 
    { 
     return destination; 
    } 

    /** 
    * @param destination 
    *   the destination to set 
    */ 
    public void setDestination(String destination) 
    { 
     this.destination = destination; 
    } 

} 
1

뭔가 : 루프에 대해 하나의 최적화 코드 아래

Map<Destination, Integer> map = new HashMap<>(); 
for(Passenger passenger : list) { 
    Destination dest = passenger.getDestination(); 
    int times = 0; 
    if(map.hasKey(dest)) { 
    times = map.get(dest); 
    } 
    map.put(dest, ++times); 
} 
Collections.sort(map.values()); 
관련 문제