Joshua Chung 6 anni fa
parent
commit
aa25219ef5

+ 7
- 6
src/main/java/MapFunc/MapFunc.java Vedi File

@@ -1,5 +1,6 @@
1 1
 package MapFunc;
2 2
 
3
+import java.lang.reflect.Array;
3 4
 import java.util.ArrayList;
4 5
 import java.util.function.Function;
5 6
 
@@ -9,13 +10,13 @@ import java.util.function.Function;
9 10
  */
10 11
 public class MapFunc {
11 12
 
12
-    @FunctionalInterface
13
-    public interface Function<T, R> {
14
-        
15
-    }
16
-
17 13
 
18
-    public static <E implements Function<T, R>> void map(ArrayList<E>, Function<T, R>) {
19 14
 
15
+    public static <T, R> ArrayList<R> map(ArrayList<T> arr, Function<T, R> function) {
16
+        ArrayList<R> mapArr = new ArrayList<>();
17
+        for(int i = 0; i < arr.size(); i++) {
18
+            mapArr.add(function.apply(arr.get(i)));
19
+        }
20
+        return mapArr;
20 21
     }
21 22
 }

+ 38
- 4
src/main/java/Pair/Arrays.java Vedi File

@@ -10,7 +10,41 @@ import java.util.Collections;
10 10
  * A max method that returns the largest item in the arraylist
11 11
  * And a minmax method that returns a pair containing the largest and smallest items from the array list
12 12
  */
13
-//public class Arrays {
14
-//    public static <___> Pair<E> firstLast(ArrayList<___> a) {
15
-//    }
16
-//}
13
+public class Arrays<E> {
14
+
15
+
16
+
17
+    public static <E extends Comparable> Pair<E> firstLast(ArrayList<E> a) {
18
+        E first = a.get(0);
19
+        E last = a.get(a.size() - 1);
20
+        return new Pair<>(first, last);
21
+    }
22
+
23
+    public static <E extends Comparable>E min(ArrayList<E> a) {
24
+        E min = a.get(0);
25
+        for(int i = 1; i < a.size(); i++)
26
+            if(min.compareTo(a.get(i)) > 0) min = a.get(i);
27
+        return min;
28
+    }
29
+
30
+    public static <E extends Comparable>E max(ArrayList<E> a) {
31
+        E max = a.get(0);
32
+        for(int i = 1; i < a.size(); i++)
33
+            if(max.compareTo(a.get(i)) < 0) max = a.get(i);
34
+        return max;
35
+    }
36
+
37
+    public static <E extends Comparable> Pair<E> minMax(ArrayList<E> a) {
38
+        if (a == null || a.size() == 0) return null;
39
+        E min = a.get(0);
40
+        E max = a.get(0);
41
+        for(int i = 0; i < a.size(); i++) {
42
+            if (min.compareTo(a.get(i)) > 0) min = a.get(i);
43
+            if (max.compareTo(a.get(i)) < 0) max = a.get(i);
44
+        }
45
+        return new Pair<>(min, max);
46
+    }
47
+
48
+
49
+}
50
+

+ 36
- 1
src/main/java/Pair/Pair.java Vedi File

@@ -7,6 +7,41 @@ package Pair;
7 7
  * min -> returns the minimum of the pair
8 8
  * max -> returns the maximum of the pair
9 9
  */
10
-public class Pair {
10
+public class Pair<E extends Comparable>{
11
+    private E first;
12
+    private E second;
11 13
 
14
+    public Pair() {
15
+        first = null;
16
+        second = null;
17
+    }
18
+
19
+    public Pair(E first, E second) {
20
+        this.first = first;
21
+        this.second = second;
22
+    }
23
+
24
+    public E getFirst() { return first; }
25
+    public E getSecond() { return second; }
26
+
27
+    public void setFirst(E newValue) { this.first = newValue; }
28
+    public void setSecond(E newValue) { this.second = newValue; }
29
+
30
+    public <E> E min() {
31
+        first = getFirst();
32
+        second = getSecond();
33
+        if(first.compareTo(second) < second.compareTo(first)) {
34
+            return (E)first;
35
+        }
36
+        return (E)second;
37
+    }
38
+
39
+    public <E> E max() {
40
+        first = getFirst();
41
+        second = getSecond();
42
+        if(first.compareTo(second) > second.compareTo(first)) {
43
+            return (E) first;
44
+        }
45
+        return (E)second;
46
+    }
12 47
 }

+ 74
- 74
src/test/java/Pair/ArraysTest.java Vedi File

@@ -1,74 +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
-//}
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
- 32
src/test/java/Pair/PairTest.java Vedi File

@@ -1,32 +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
-//}
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
+}