CS2514

Introduction to Java

Dr Derek Bridge

School of Computer Science & Information Technology

University College Cork

Polymorphic data structures that aren't arrays

s_linked_list.py & SLinkedList.java

PythonJava
class SSLNode:
 
 
 
     
    def __init__(self, item, nextnode):
        self.element = item
        self.next = nextnode 
 
 
 
 
class SLinkedList:
 
 
 
     
    def __init__(self):
        self.first = None
        self.size = 0
 
 
    def __str__(self):
        outstr = "-"
        node = self.first
        while node:
            outstr = outstr + 
                str(node.element) + "-"
            node = node.next
        return outstr
           
           
           
    def add_last(self, element):
        newnode = SSLNode(element, None)
        if self.first == None:
            self.first = newnode
        else:
            node = self.first
            while node.next:
                node = node.next
            node.next = newnode
        self.size = self.size + 1
 
 
 
 
 
class SSLNode {
    
   Object element;
   SSLNode next;
        
   public SSLNode(Object item, SSLNode nextnode) {
       element = item;
       next = nextnode; 
   }
    
}
   
class SLinkedList {
    
   private SSLNode first;
   private int size;
    
   public SLinkedList() {
      first = null;
      size = 0;
   }

   public String toString() {
      String outstr = "-";
      SSLNode node = first;
      while (node != null) {
         outstr = outstr + 
             node.element.toString() + "-";
         node = node.next;
      }
      return outstr;
   }
           
   public void addLast(Object element) {
      SSLNode newnode = new SSLNode(element, null);
      if (first == null) {
         first = newnode;
      } else {
         SSLNode node = first;
         while (node.next != null) {
            node = node.next;
         }
         node.next = newnode;
      }
      size = size + 1;
   }

}

list_tester.py and ListTester.java

PythonJava
from s_linked_list import SSLNode
from s_linked_list import SLinkedList

def test_linkedlist():
    mylist = SLinkedList()
    mylist.add_last('a')
    mylist.add_last('b')
    mylist.add_last('c')
    print(mylist)
    
test_linkedlist()
 
class ListTester {
 
 
   public static void main(String[] args) {
      SLinkedList mylist = new SLinkedList();
      mylist.addLast("a");
      mylist.addLast("b");
      mylist.addLast("c");
      System.out.println(mylist);
   }

}

Data structures in the standard library

Generic data structures

Advanced: your own generic data structures

class SSLNode<T> {
    
    T element;
    SSLNode next;
        
    public SSLNode(T item, SSLNode nextnode) {
        element = item;
        next = nextnode; 
    }
    
}
    
class SLinkedList<T> {
    
    private SSLNode first;
    private int size;
    
    public SLinkedList() {
        first = null;
        size = 0;
    }

    public String toString() {
        String outstr = "-";
        SSLNode node = first;
        while (node != null) {
            outstr = outstr + node.element.toString() + "-";
            node = node.next;
        }
        return outstr;
    }

    public void addLast(T element) {
        SSLNode newnode = new SSLNode<T>(element, null);
        if (first == null) {
            first = newnode;
        } else {
            SSLNode node = first;
            while (node.next != null) {
                node = node.next;
            }
            node.next = newnode;
        }
        size = size + 1;
    }

}

Advanced: your own generic data structures

class ListTester {

    public static void main(String[] args) {
        SLinkedList<String> mylist = new SLinkedList<String>();
        mylist.addLast("a");
        mylist.addLast("b");
        mylist.addLast("c");
        System.out.println(mylist);
    }

}

Advanced: your own generic data structures

Interfaces

Java interfaces

Class definitions vs. Java interfaces

Implementing a Java interface

Implementing a Java interface

More polymorphism and dynamic method binding

Java interfaces: what's the point?

Java interfaces: what's the point? cont'd