我认为这件事不同(只是为了补充其他答案):
您有一个航班,其中有座位和乘客,所以我要做的是实现航班类以添加座位-乘客逻辑。唯一的诀窍是您必须选择哪个乘客将是非座位:
- (座位号,空)
- (seatNumber,defaultPassenger,id=0,name=OPEN)
我选择了二:
乘客:
public class Seat {
private int seatNumber;
public Seat ( )
{
}
public Seat ( int seatNumber )
{
this.seatNumber = seatNumber;
}
/**
* @return the seatNumber
*/
public int getSeatNumber ( )
{
return seatNumber;
}
/**
* @param seatNumber the seatNumber to set
*/
public void setSeatNumber ( int seatNumber )
{
this.seatNumber = seatNumber;
}
@Override
public String toString ( )
{
return "Seats [seatNumber=" + seatNumber + "]";
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode ( )
{
final int prime = 31;
int result = 1;
result = prime * result + seatNumber;
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals ( Object obj )
{
if ( this == obj )
return true;
if ( obj == null )
return false;
if ( getClass ( ) != obj.getClass ( ) )
return false;
Seat other = ( Seat ) obj;
if ( seatNumber != other.seatNumber )
return false;
return true;
}
}
座位:
public class Seat {
private int seatNumber;
public Seat ( )
{
}
public Seat ( int seatNumber )
{
this.seatNumber = seatNumber;
}
/**
* @return the seatNumber
*/
public int getSeatNumber ( )
{
return seatNumber;
}
/**
* @param seatNumber the seatNumber to set
*/
public void setSeatNumber ( int seatNumber )
{
this.seatNumber = seatNumber;
}
@Override
public String toString ( )
{
return "Seats [seatNumber=" + seatNumber + "]";
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode ( )
{
final int prime = 31;
int result = 1;
result = prime * result + seatNumber;
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals ( Object obj )
{
if ( this == obj )
return true;
if ( obj == null )
return false;
if ( getClass ( ) != obj.getClass ( ) )
return false;
Seat other = ( Seat ) obj;
if ( seatNumber != other.seatNumber )
return false;
return true;
}
}
航班:
import java.util.HashMap;
public class Flight
{
private HashMap<Seat, Passenger> seatMap;
public Flight(int numberOfSeats)
{
seatMap = new HashMap<>();
for(int i = 1; i <= numberOfSeats; i++)
{
seatMap.put ( new Seat ( i ) , new Passenger ( ) );
}
}
/**
* @return the seatMap
*/
public HashMap < Seat , Passenger > getSeatMap ( )
{
return seatMap;
}
/**
* @param seatMap the seatMap to set
*/
public void setSeatMap ( HashMap < Seat , Passenger > seatMap )
{
this.seatMap = seatMap;
}
public void sitPassenger (int seatNumber, Passenger passenger)
{
seatMap.put ( new Seat ( seatNumber ) , passenger );
}
@Override
public String toString ( )
{
return "Flight [seatMap=" + seatMap + "]";
}
}
主类:
public class mainProgram
{
public static void main(String args [])
{
//set number of seats
Flight myFlight = new Flight ( 3 );
//first passenger
Passenger firstP = new Passenger ( );
firstP.setSocialNumber ( 19993 );
firstP.setName ( "John" );
//second passenger
Passenger secondP = new Passenger ( );
secondP.setSocialNumber ( 19994 );
secondP.setName ( "Brian" );
//sit them
myFlight.sitPassenger ( 1 , firstP );
myFlight.sitPassenger ( 2 , secondP );
//output
System.out.println ( myFlight.toString ( ) );
}
}
输出:
航班 [seatMap={
座位 [seatNumber=1]=乘客 [socialNumber=19993, name=John],
座位 [seatNumber=2]=乘客 [socialNumber=19994, name=Brian],
座位 [seatNumber=3]=乘客 [socialNumber=0, name=OPEN]
}]
这个解决方案允许在不同的航班(座位)上拥有相同的乘客,这是飞机座位预留计划应该做的,恕我直言。