Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

JAVA LAB 8

1)
/*
File:StackDemoAL.java
user defined class for generic stack
*/
import java.util.*;
class stack<T extends Number> {
ArrayList<T> A;
int top=-1;
int size;

stack(int size) {
this.size=size;
A=new ArrayList<T>(size);
}

void push(T elt) {


if(top==size-1)
System.out.println("Stack Overflow");
else {
top++;
A.add(top,elt);
}
}

T pop() {
if(top==-1) {
System.out.println("Stack Underflow");
return null;
}
else {
T elt=A.get(top);
A.remove(top);
top--;
return elt;
}
}
}

class StackDemoAL {
public static void main(String args[]) {
final int size=5;
stack<Integer> iStk=new stack<Integer>(size);
iStk.push(10);
iStk.push(20);
iStk.push(30);
iStk.push(40);
iStk.push(50);
iStk.push(60);
System.out.println("Popped element:" + iStk.pop());
System.out.println("Popped element:" + iStk.pop());
System.out.println("Popped element:" + iStk.pop());
System.out.println("Popped element:" + iStk.pop());
System.out.println("Popped element:" + iStk.pop());
System.out.println("Popped element:" + iStk.pop());

stack<Double> dStk=new stack<Double>(size);

dStk.push(10.56);
dStk.push(20.12);
dStk.push(30.23);
dStk.push(40.67);
dStk.push(50.12);
dStk.push(60.4);

System.out.println("Popped element:" + dStk.pop());


System.out.println("Popped element:" + dStk.pop());
System.out.println("Popped element:" + dStk.pop());
System.out.println("Popped element:" + dStk.pop());
System.out.println("Popped element:" + dStk.pop());
System.out.println("Popped element:" + dStk.pop());

/* stack<String> strStk=new stack<String>(size);


strStk.push("Hello");
strStk.push("How");
strStk.push("Are");
strStk.push("You");
strStk.push("Most");
strStk.push("Welcome");

System.out.println("Popped element:" + strStk.pop());


System.out.println("Popped element:" + strStk.pop());
System.out.println("Popped element:" + strStk.pop());
System.out.println("Popped element:" + strStk.pop());
System.out.println("Popped element:" + strStk.pop());
System.out.println("Popped element:" + strStk.pop());
*/
}
}

OUTPUT:

javac StackDemoAL.java
$ java StackDemoAL

Stack Overflow
Popped element:50
Popped element:40
Popped element:30
Popped element:20
Popped element:10
Stack Underflow
Popped element:null
Stack Overflow
Popped element:50.12
Popped element:40.67
Popped element:30.23
Popped element:20.12
Popped element:10.56
Stack Underflow
Popped element:null

Stack Overflow
Popped element:Most
Popped element:You
Popped element:Are
Popped element:How
Popped element:Hello
Stack Underflow
Popped element:null

2)

/*
File : BoundsDemo.java

In this version of Stats, the type argument for


T must be either Number, or a class derived
from Number.

*/

class Stats<T extends Number> {


T[] nums; // array of Number or subclass
// Pass the constructor a reference to
// an array of type Number or subclass.
Stats(T[] o) {
nums = o;
}

// Return type double in all cases.


double average() {
double sum = 0.0;
for(int i=0; i < nums.length; i++)
sum += nums[i].doubleValue();
return sum / nums.length;
}
}

// Demonstrate Stats.
class BoundsDemo {
public static void main(String args[]) {
Integer inums[] = { 1, 2, 3, 4, 5 };
Stats<Integer> iob = new Stats<Integer>(inums);
double v = iob.average();
System.out.println("iob average is " + v);
Double dnums[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
Stats<Double> dob = new Stats<Double>(dnums);
double w = dob.average();
System.out.println("dob average is " + w);
// This won't compile because String is not a
// subclass of Number.
// String strs[] = { "1", "2", "3", "4", "5" };
// Stats<String> strob = new Stats<String>(strs);
// double x = strob.average();
// System.out.println("strob average is " + v);
}
}

OUTPUT:

$ javac BoundsDemo.java
$ java BoundsDemo
iob average is 3.0
dob average is 3.3

3)

/*
File : SimpGen.java

A simple generic class with two type

*/

// parameters: T and V.
class TwoGen<T, V> {
T ob1;
V ob2;

// Pass the constructor a reference to


// an object of type T and an object of type V.
TwoGen(T o1, V o2) {
ob1 = o1;
ob2 = o2;
}

// Show types of T and V.


void showTypes() {
System.out.println("Type of T is " +
ob1.getClass().getName());
System.out.println("Type of V is " +
ob2.getClass().getName());
}

T getob1() {
return ob1;
}

V getob2() {
return ob2;
}
}

// Demonstrate TwoGen.
class SimpGen {
public static void main(String args[]) {
TwoGen<Integer, String> tgObj = new TwoGen<Integer, String>(88, "Generics");

// Show the types.


tgObj.showTypes();

// Obtain and show values.


int v = tgObj.getob1();
System.out.println("value: " + v);
String str = tgObj.getob2();
System.out.println("value: " + str);
}
}

OUTPUT:

$ javac SimpGen.java
$ java SimpGen
Type of T is java.lang.Integer
Type of V is java.lang.String
value: 88
value: Generics

4)

/*
File : WildcardDemo.java
Use a wildcard.

*/

class Stats<T extends Number> {

T[] nums; // array of Number or subclass

// Pass the constructor a reference to an array of type Number or subclass.


Stats(T[] o) {
nums = o;
}

// Return type double in all cases.


double average() {
double sum = 0.0;
for(int i=0; i < nums.length; i++)
sum += nums[i].doubleValue();
return sum / nums.length;
}

// Determine if two averages are the same.


// Notice the use of the wildcard.
boolean sameAvg(Stats<?> ob) {
if(average() == ob.average())
return true;
return false;
}
}

// Demonstrate wildcard.
class WildcardDemo {
public static void main(String args[]) {
Integer inums[] = { 1, 2, 3, 4, 5 };
Stats<Integer> iob = new Stats<Integer>(inums);
double v = iob.average();
System.out.println("iob average is " + v);
Double dnums[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
Stats<Double> dob = new Stats<Double>(dnums);
double w = dob.average();
System.out.println("dob average is " + w);
Float fnums[] = { 1.0F, 2.0F, 3.0F, 4.0F, 5.0F };
Stats<Float> fob = new Stats<Float>(fnums);
double x = fob.average();
System.out.println("fob average is " + x);
// See which arrays have same average.
System.out.print("Averages of iob and dob ");

if(iob.sameAvg(dob))
System.out.println("are the same.");
else
System.out.println("differ.");
System.out.print("Averages of iob and fob ");

if(iob.sameAvg(fob))
System.out.println("are the same.");
else
System.out.println("differ.");
}
}
OUTPUT:

$ javac WildcardDemo.java
$java WildcardDemo

iob average is 3.0


dob average is 3.3
fob average is 3.0
Averages of iob and dob differ.
Averages of iob and fob are the same.

5)

OUTPUT:

You might also like