Browse Source

Added the last lab.

Zach Marcin 7 years ago
parent
commit
844bbe3241

+ 11
- 2
README.md View File

@@ -19,5 +19,14 @@ tests, not the code.
19 19
 6. ArrayListCombiner -- Write two methods, `superCombiner` and `extendCombiner`, which each take two arraylists and append
20 20
 all of the items from the second to the first.  `superCombiner` should use `? super E` and `extendCombiner` should use 
21 21
 `? extends E`.
22
-7. MapFunc -- MAke a `map` method that takes an ArrayList and a `Function<T,R>` object and returns an arraylist 
23
-containing all of the elements of the first with the function applied to them.
22
+7. MapFunc -- Make a `map` method that takes an ArrayList and a `Function<T,R>` object and returns an arraylist 
23
+containing all of the elements of the first with the function applied to them.
24
+8. Pair -- This is a multi-step one:
25
+    1. Create a Pair<E> that stores a pair of elements of type `E`.
26
+    2. Create two methods, `min` and `max`, that return the largest and smallest of the `Pair`.
27
+    3. Create a utility class called `Arrays` and, in that, create a method
28
+    <br>`public static <___> Pair<E> firstLast(ArrayList<___> a)`<br>
29
+    That returns a Pair containing the first and last element of the array.  <br>NOTE: The `<___>` is there because you
30
+    need to fill in the blank.
31
+    4. In `Arrays` make two methods, `min` and `max` that returns the smallest and largest elements in the ArrayList.
32
+    5. In `Arrays` make a `minMax` function that returns a `Pair` with the minimum and maximum values of the ArrayList.

+ 16
- 0
src/main/java/Pair/Arrays.java View File

@@ -0,0 +1,16 @@
1
+package Pair;
2
+
3
+import java.util.ArrayList;
4
+import java.util.Collections;
5
+
6
+/**
7
+ * In here you must make firstLast, which will return a pair of the first element in the array list and the last
8
+ * element in the arraylist.
9
+ * You must also make a min method that returns the smallest item in the array list
10
+ * A max method that returns the largest item in the arraylist
11
+ * And a minmax method that returns a pair containing the largest and smallest items from the array list
12
+ */
13
+public class Arrays {
14
+    public static <___> Pair<E> firstLast(ArrayList<___> a) {
15
+    }
16
+}

+ 12
- 0
src/main/java/Pair/Pair.java View File

@@ -0,0 +1,12 @@
1
+package Pair;
2
+
3
+/**
4
+ * You need to store two values of type `E`, set them in a constructor, and have the following methods,
5
+ * getFirst
6
+ * getSecond
7
+ * min -> returns the minimum of the pair
8
+ * max -> returns the maximum of the pair
9
+ */
10
+public class Pair {
11
+
12
+}

+ 74
- 0
src/test/java/Pair/ArraysTest.java View File

@@ -0,0 +1,74 @@
1
+//package Pair;
2
+//
3
+//import org.junit.Assert;
4
+//import org.junit.Test;
5
+//
6
+//import java.util.ArrayList;
7
+//
8
+//public class ArraysTest {
9
+//    @Test
10
+//    public void firstLast() throws Exception {
11
+//        // Given an ArrayList of Integers
12
+//        ArrayList<Integer> al = new ArrayList<>();
13
+//        al.add(1);
14
+//        al.add(5);
15
+//        al.add(3);
16
+//        al.add(4);
17
+//        al.add(2);
18
+//        al.add(0);
19
+//        al.add(1000);
20
+//        // When firstLast is called
21
+//        Pair<Integer> result = Arrays.firstLast(al);
22
+//        // Then it should return the first and last items
23
+//        Assert.assertEquals(new Integer(1), result.getFirst());
24
+//        Assert.assertEquals(new Integer(1000), result.getSecond());
25
+//    }
26
+//
27
+//    @Test
28
+//    public void testMin() throws Exception {
29
+//        // Given an ArrayList of Integers
30
+//        ArrayList<Integer> al = new ArrayList<>();
31
+//        al.add(1);
32
+//        al.add(5);
33
+//        al.add(3);
34
+//        al.add(4);
35
+//        al.add(2);
36
+//        al.add(0);
37
+//        al.add(1000);
38
+//        // When min is called assert that it gets the smallest item
39
+//        Assert.assertEquals(new Integer(0), Arrays.min(al));
40
+//    }
41
+//
42
+//    @Test
43
+//    public void testMax() throws Exception {
44
+//        // Given an ArrayList of Integers
45
+//        ArrayList<Integer> al = new ArrayList<>();
46
+//        al.add(1);
47
+//        al.add(5);
48
+//        al.add(3);
49
+//        al.add(4);
50
+//        al.add(2);
51
+//        al.add(0);
52
+//        al.add(1000);
53
+//        // When min is called assert that it gets the largest item
54
+//        Assert.assertEquals(new Integer(1000), Arrays.max(al));
55
+//    }
56
+//
57
+//    @Test
58
+//    public void testMinMax() throws Exception {
59
+//        // Given an ArrayList of Integers
60
+//        ArrayList<Integer> al = new ArrayList<>();
61
+//        al.add(1);
62
+//        al.add(5);
63
+//        al.add(3);
64
+//        al.add(4);
65
+//        al.add(2);
66
+//        al.add(0);
67
+//        al.add(1000);
68
+//        // When minMax is called
69
+//        Pair<Integer> result = Arrays.minMax(al);
70
+//        // Then it should return the first and last items
71
+//        Assert.assertEquals(new Integer(0), result.min());
72
+//        Assert.assertEquals(new Integer(1000), result.max());
73
+//    }
74
+//}

+ 32
- 0
src/test/java/Pair/PairTest.java View File

@@ -0,0 +1,32 @@
1
+//package Pair;
2
+//
3
+//import org.junit.Test;
4
+//import org.junit.Assert;
5
+//
6
+//public class PairTest {
7
+//
8
+//    @Test
9
+//    public void testGetters() throws Exception {
10
+//        // Given a pair with "Foo" and "Bar"
11
+//        Pair<String> p = new Pair<String>("Foo", "Bar");
12
+//        // When getFirst and getSecond are called, they should be returned.
13
+//        Assert.assertEquals("Foo", p.getFirst());
14
+//        Assert.assertEquals("Bar",  p.getSecond());
15
+//    }
16
+//
17
+//    @Test
18
+//    public void testMin() throws Exception {
19
+//        // Given a pair with two values
20
+//        Pair<Double> p = new Pair<Double>(1.23, 2.34);
21
+//        // When p.min() is called, the smallest should be returned.
22
+//        Assert.assertEquals(new Double(1.23), p.min());
23
+//    }
24
+//
25
+//    @Test
26
+//    public void testMax() throws Exception {
27
+//        // Given a pair with two values
28
+//        Pair<Double> p = new Pair<Double>(1.23, 2.34);
29
+//        // When p.max() is called, the largest should be returned.
30
+//        Assert.assertEquals(new Double(2.34), p.max());
31
+//    }
32
+//}