Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package PP_Lab.Lab11
- class Queue[+T] private (val l1: List[T], val l2: List[T]) {
- //Exception
- class QueueException(message: String) extends Exception(message)
- def this() = this(Nil, Nil)
- // def enqueue[T](elem: T) : Queue[T] = {
- // (l1, l2) match {
- // case (Nil, Nil) => new Queue(List(elem), Nil)
- // case (_, _) => new Queue(l1, elem :: l2)
- // }
- // }
- def enqueue[S >: T](elem: S) = {
- (l1, l2) match {
- case (Nil, Nil) => new Queue[S](List(elem), Nil)
- case (_, _) => new Queue[S](l1, elem :: l2)
- }
- }
- def dequeue() : Queue[T] = {
- (l1, l2) match {
- case (Nil, Nil) => this
- case (List(_), l) => new Queue(l.reverse, Nil)
- case (_ :: t, l) => new Queue(t, l)
- }
- }
- def first() : T = {
- (l1, l2) match {
- case (Nil, Nil) => throw new QueueException("empty")
- case (h :: _, _) => h
- case _ => throw new QueueException("sth gone wrong")
- }
- }
- def isEmpty : Boolean = {
- l1 == Nil
- }
- override def toString : String = {
- var res = ""
- var qTemp = this
- while (!qTemp.isEmpty) {
- res += qTemp.first() + "\n"
- qTemp = qTemp.dequeue()
- }
- res
- }
- override def hashCode(): Int = 2137
- }
- object QueueTests extends App {
- var q1 = new Queue[Number]()
- q1 = q1.enqueue(10)
- q1 = q1.enqueue(20.4)
- q1 = q1.enqueue(0.5f)
- println(q1)
- var qPoints = new Queue[Point]()
- qPoints = qPoints.enqueue(new Point(0.0))
- qPoints = qPoints.enqueue(new Point(2.2))
- qPoints = qPoints.enqueue(new Pixel())
- println("punkty:")
- println(qPoints)
- var qPixels = new Queue[Pixel]()
- //qPixels = qPixels.enqueue(new Point(0,-1))
- qPixels = qPixels.enqueue(new Pixel())
- qPixels = qPixels.enqueue(new Pixel(2, 2))
- println("pixels:")
- println(qPixels)
- var qPixels2 = qPixels.enqueue(new Point(0, -1))
- println("pixele z punktami:")
- println(qPixels2)
- //rzutowanie:
- var element = qPixels2.first()
- println("kolejka")
- println(qPixels2.getClass.toGenericString)
- println()
- println("element: ")
- println(element.isInstanceOf[Point])
- println(element.isInstanceOf[Pixel])
- println(element.getClass.toGenericString)
- println()
- qPoints = qPixels
- //qPixels = qPoints //nie kompiluje siÄ™
- println(qPoints)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement