Difference between revisions of "ImmutableList Assignment"

From CSE425S Wiki
Jump to navigation Jump to search
Line 24: Line 24:
 
====brackets====
 
====brackets====
 
<pre>public static <E> ImmutableList<E> brackets(E... elements)</pre>
 
<pre>public static <E> ImmutableList<E> brackets(E... elements)</pre>
 +
 +
Constructs an ImmutableList<E> whose contents are defined by the elements passed in.
 +
 +
The parameter <tt>E... arguments</tt> is an example usage of [https://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html varargs] in Java.  You can treat parameter elements as if it is an <tt>E[]</tt>.  The varargs <tt>...</tt> simply allows for more convenient invocations of the <tt>brackets</tt> method.
 +
 +
In order to build this method, consider added a <tt>private static</tt> helper method to perform the actual work.
 +
 +
It is suggested that you adopt a recursive approach to solving this problem.  What is the base case?  What is the recursive case?
  
 
==Apps==
 
==Apps==

Revision as of 23:06, 17 January 2020

Code To Implement

Utilities

DefaultImmutableList<E>

class: DefaultImmutableList.java Java.png
methods: constructors
head
tail
isEmpty
package: immutable.list.assignment
source folder: src/main/java

class DefaultImmutableList implements ImmutableList<E>

Note: consider using java.util.Optional

Note: you need not implement iterator() now. That will be the subject of a future studio.

Lists

class: Lists.java Java.png
methods: nil
cons
brackets
package: immutable.list.assignment
source folder: src/main/java

nil

public static <E> ImmutableList<E> nil()

Constructs a new empty list, analogous to the nil constructor for SML List.

cons

public static <E> ImmutableList<E> cons(E head, ImmutableList<E> tail)

Constructs a new list comprised of head::tail, analogous to the :: constructor for SML List.

brackets

public static <E> ImmutableList<E> brackets(E... elements)

Constructs an ImmutableList<E> whose contents are defined by the elements passed in.

The parameter E... arguments is an example usage of varargs in Java. You can treat parameter elements as if it is an E[]. The varargs ... simply allows for more convenient invocations of the brackets method.

In order to build this method, consider added a private static helper method to perform the actual work.

It is suggested that you adopt a recursive approach to solving this problem. What is the base case? What is the recursive case?

Apps

Length

class: Length.java Java.png
methods: length
package: immutable.list.apps.assignment
source folder: src/main/java

public static <E> int length(ImmutableList<E> list)

SumProductCountdownFactorial

class: SumProductCountdownFactorial.java Java.png
methods: sum
product
countdown
factorial
package: immutable.list.apps.assignment
source folder: src/main/java

sum

public static int sum(ImmutableList<Integer> xs)

product

public static int product(ImmutableList<Integer> xs)

countdown

public static ImmutableList<Integer> countdown(int n)

factorial

public static int factorial(int n)

Concat

class: Concat.java Java.png
methods: concat
package: immutable.list.apps.assignment
source folder: src/main/java

public static <E> ImmutableList<E> concat(ImmutableList<E> xs, ImmutableList<E> ys)

Test

class: ImmutableListTestSuite.java Junit.png
package: immutable.list.assignment
source folder: src/test/java