Generics The goal: Use two functional interfaces to implement helpful methods that take and change lists...
Fantastic news! We've Found the answer you've been seeking!
Question:
Transcribed Image Text:
Generics The goal: Use two functional interfaces to implement helpful methods that take and change lists of any element type. All classes must follow all good design and coding practices, including good design of classes, code indenting, appropriate comments, and readable and meaningful output. First, create these two functional interfaces: @FunctionalInterface public interface Predicate { boolean test (T t); } @FunctionalInterface public interface Function { T apply (T t); } Now, create a class ListProcessor. It is a helper class that acts as a container for four static methods: destructiveFilter (ArrayList a, Predicate p) nondestructive Filter (ArrayList a, Predicate p) nondestructive FunctionApplyer (ArrayList a, Function f) destructive FunctionApplyer (ArrayList a, Function f) All four of these static methods take an ArrayList of and either a Predicate or a Function , and all four of these methods should return an ArrayList of integers. The nondestructive methods shouldn't modify the list they're given; they should create a new ArrayList with the correct elements and return that. The destructive methods, on the other hand, should actually change the ArrayList they're given, and then return them. The filter methods should apply the Predicate they're given to each element in the list, and whether the Predicate returns true or false determines whether that element will be in the list that's returned. The functionApplyer methods should apply the Function they're given to each element in the list, and put each result at the same index in the list. What your Tester.java main method should do: Create ArrayLists of at least two different type parameters one of which is Integer, fill them, and test each of the four helper methods on them. 1. Test and print the input and output of destructiveFilter and nondestructive Filter on test lists for a particular Predicate. Use a lambda expression for the Predicate! 2. Do the above again, but with a different Predicate. Again, use a lambda expression for the Predicate! 3. Test and print the input and output of destructive FunctionApplyer and nondestructive FunctionApplyer on test lists for a particular Function. Use a lambda expression for the Function! 4. Do the above again, but with a different Function. And again, use a lambda expression for the Function. Example output is shown below: Tester: intlist: [393, 974, 79, 38, 793, 96, 318, 514, 962, 479] intlist non-destructively filtered to remove odds: [974, 38, 96, 318, 514, 962] intlist (should be unchanged): [393, 974, 79, 38, 793, 96, 318, 514, 962, 479] intlist destructively filtered to remove odds... intList: [974, 38, 96, 318, 514, 962] [974, 38, 96, 318, 514, 962] strlist2: [California, Utah, New York, Idaho, Nevada, Wyoming] strlist2 non-destructively filtered to remove elements containing 'a': [New York, Wyoming] strlist2 (should be unchanged): [California, Utah, New York, Idaho, Nevada, Wyoming] strlist destructively filtered to remove elements containing 'a'... strlist2: [New York, Wyoming] intList4: [5, 6, 7, 8, 9] intlist4 non-destructively made all values decremented: [4, 5, 6, 7, 8] intList4 (should be unchanged): [5, 6, 7, 8, 9] intlist4 destructively made all values decremented... intList4: [4, 5, 6, 7, 8] strlist: [cat, dog, house, zebra, Constantinople] strlist non-destructively made all values truncated by one char: [ca, do, hous, zebr, Constantinopl] strlist (should be unchanged): [cat, dog, house, zebra, Constantinople] strlist destructively made all values truncated by one char... strlist: [ca, do, hous, zebr, Constantinopll import java.util.ArrayList; import java.util.ListIterator; public class List Processor { public T a; public T p; public T f; public ListProcessor (T ArrayList, T Predicate, T Function) { ArrayList = a; Predicate = p; Function = f; } public void setArrayList (Tn){ this.a = n; } public void setPredicate (T n) { this.p = n; } public void setFunction (Tn){ this. f = n; } public T getArrayList() { return a; } public T getPredicate() { return p; } public T getFunction () { return f; } public String toString(){ return " < >"; public static ArrayList //Iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()) } // if item doesn't pass test, remove it) if (!p.test(iterator.next())) iterator.remove(); return a; public static ArrayList nondestructiveFilter(ArrayList a, Predicate p) { ArrayList result = new ArrayList (); //Iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()) { destructiveFilter(ArrayList a, Predicate p) { T item iterator.next(); // if item pass if (p.test(item)) result.add(item); } return result; public static ArrayList nondestructiveFunctionApplyer (ArrayList a, Function f) { ArrayList result = new ArrayList (); //iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()){ // add result of function to the result list result.add(f.apply(iterator.next())); } return result; public static ArrayList destructiveFunctionApplyer (ArrayList a, Function f) { // iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()){ //set the current item to the result of the function iterator.set(f.apply(iterator.next())); } return a; @FunctionalInterface public interface Function { T apply (T nexT); } @FunctionalInterface public interface Predicate { boolean test (T Next); } import java.util.ArrayList; public class Tester { public static void main(String[] args) { System.out.println("Tester: "); //Random list of 10 times ArrayList intlist= new ArrayList (); for (int i = 0; i <10; i++) intlist.add((int) (Math.random()*1000 +1)); System.out.println("inList: " + intlist); System.out.println("inList non-destructively filtered to remoe odds: a->a%2 ==0)); ListProcessor.nondestructiveFilter(intlist, System.out.println("inList: (should be unchanged): " + intlist); System.out.println("inlist destructively filtered to remove odds... "); ListProcessor.destructiveFilter(intlist,a->a%2==0); System.out.println("inlist: " + intlist); System.out.println(". -------"); // strList2 ArrayList strlist = new ArrayList (); for(int i=0; i Tester: inList: [303, 598, 859, 631, 169, 769, 692, 387, 93, 63] inList non-destructively filtered to remoe odds: [598, 692] inList: (should be unchanged): [303, 598, 859, 631, 169, 769, 692, 387, 93, 63] inList destructively filtered to remove odds... inList: [598, 692] strList2: [California, Utah, New York, Idaho, Nevada, Wyoming] strList2 non-destructively filtered to remove elements containing 'a': [New York, Wyoming] strList2 (should be unchanged): [New York, Wyoming] strList destructively filtered to remove elements containig 'a'... strList2: [New York, Wyoming] Generics The goal: Use two functional interfaces to implement helpful methods that take and change lists of any element type. All classes must follow all good design and coding practices, including good design of classes, code indenting, appropriate comments, and readable and meaningful output. First, create these two functional interfaces: @FunctionalInterface public interface Predicate { boolean test (T t); } @FunctionalInterface public interface Function { T apply (T t); } Now, create a class ListProcessor. It is a helper class that acts as a container for four static methods: destructiveFilter (ArrayList a, Predicate p) nondestructive Filter (ArrayList a, Predicate p) nondestructive FunctionApplyer (ArrayList a, Function f) destructive FunctionApplyer (ArrayList a, Function f) All four of these static methods take an ArrayList of and either a Predicate or a Function , and all four of these methods should return an ArrayList of integers. The nondestructive methods shouldn't modify the list they're given; they should create a new ArrayList with the correct elements and return that. The destructive methods, on the other hand, should actually change the ArrayList they're given, and then return them. The filter methods should apply the Predicate they're given to each element in the list, and whether the Predicate returns true or false determines whether that element will be in the list that's returned. The functionApplyer methods should apply the Function they're given to each element in the list, and put each result at the same index in the list. Generics The goal: Use two functional interfaces to implement helpful methods that take and change lists of any element type. All classes must follow all good design and coding practices, including good design of classes, code indenting, appropriate comments, and readable and meaningful output. First, create these two functional interfaces: @FunctionalInterface public interface Predicate { boolean test (T t); } @FunctionalInterface public interface Function { T apply (T t); } Now, create a class ListProcessor. It is a helper class that acts as a container for four static methods: destructiveFilter (ArrayList a, Predicate p) nondestructive Filter (ArrayList a, Predicate p) nondestructive FunctionApplyer (ArrayList a, Function f) destructive FunctionApplyer (ArrayList a, Function f) All four of these static methods take an ArrayList of and either a Predicate or a Function , and all four of these methods should return an ArrayList of integers. The nondestructive methods shouldn't modify the list they're given; they should create a new ArrayList with the correct elements and return that. The destructive methods, on the other hand, should actually change the ArrayList they're given, and then return them. The filter methods should apply the Predicate they're given to each element in the list, and whether the Predicate returns true or false determines whether that element will be in the list that's returned. The functionApplyer methods should apply the Function they're given to each element in the list, and put each result at the same index in the list. What your Tester.java main method should do: Create ArrayLists of at least two different type parameters one of which is Integer, fill them, and test each of the four helper methods on them. 1. Test and print the input and output of destructiveFilter and nondestructive Filter on test lists for a particular Predicate. Use a lambda expression for the Predicate! 2. Do the above again, but with a different Predicate. Again, use a lambda expression for the Predicate! 3. Test and print the input and output of destructive FunctionApplyer and nondestructive FunctionApplyer on test lists for a particular Function. Use a lambda expression for the Function! 4. Do the above again, but with a different Function. And again, use a lambda expression for the Function. What your Tester.java main method should do: Create ArrayLists of at least two different type parameters one of which is Integer, fill them, and test each of the four helper methods on them. 1. Test and print the input and output of destructiveFilter and nondestructive Filter on test lists for a particular Predicate. Use a lambda expression for the Predicate! 2. Do the above again, but with a different Predicate. Again, use a lambda expression for the Predicate! 3. Test and print the input and output of destructive FunctionApplyer and nondestructive FunctionApplyer on test lists for a particular Function. Use a lambda expression for the Function! 4. Do the above again, but with a different Function. And again, use a lambda expression for the Function. Example output is shown below: Tester: intlist: [393, 974, 79, 38, 793, 96, 318, 514, 962, 479] intlist non-destructively filtered to remove odds: [974, 38, 96, 318, 514, 962] intlist (should be unchanged): [393, 974, 79, 38, 793, 96, 318, 514, 962, 479] intlist destructively filtered to remove odds... intList: [974, 38, 96, 318, 514, 962] [974, 38, 96, 318, 514, 962] strlist2: [California, Utah, New York, Idaho, Nevada, Wyoming] strlist2 non-destructively filtered to remove elements containing 'a': [New York, Wyoming] strlist2 (should be unchanged): [California, Utah, New York, Idaho, Nevada, Wyoming] strlist destructively filtered to remove elements containing 'a'... strlist2: [New York, Wyoming] intList4: [5, 6, 7, 8, 9] intlist4 non-destructively made all values decremented: [4, 5, 6, 7, 8] intList4 (should be unchanged): [5, 6, 7, 8, 9] intlist4 destructively made all values decremented... intList4: [4, 5, 6, 7, 8] strlist: [cat, dog, house, zebra, Constantinople] strlist non-destructively made all values truncated by one char: [ca, do, hous, zebr, Constantinopl] strlist (should be unchanged): [cat, dog, house, zebra, Constantinople] strlist destructively made all values truncated by one char... strlist: [ca, do, hous, zebr, Constantinopll Example output is shown below: Tester: intlist: [393, 974, 79, 38, 793, 96, 318, 514, 962, 479] intlist non-destructively filtered to remove odds: [974, 38, 96, 318, 514, 962] intlist (should be unchanged): [393, 974, 79, 38, 793, 96, 318, 514, 962, 479] intlist destructively filtered to remove odds... intList: [974, 38, 96, 318, 514, 962] [974, 38, 96, 318, 514, 962] strlist2: [California, Utah, New York, Idaho, Nevada, Wyoming] strlist2 non-destructively filtered to remove elements containing 'a': [New York, Wyoming] strlist2 (should be unchanged): [California, Utah, New York, Idaho, Nevada, Wyoming] strlist destructively filtered to remove elements containing 'a'... strlist2: [New York, Wyoming] intList4: [5, 6, 7, 8, 9] intlist4 non-destructively made all values decremented: [4, 5, 6, 7, 8] intList4 (should be unchanged): [5, 6, 7, 8, 9] intlist4 destructively made all values decremented... intList4: [4, 5, 6, 7, 8] strlist: [cat, dog, house, zebra, Constantinople] strlist non-destructively made all values truncated by one char: [ca, do, hous, zebr, Constantinopl] strlist (should be unchanged): [cat, dog, house, zebra, Constantinople] strlist destructively made all values truncated by one char... strlist: [ca, do, hous, zebr, Constantinopll import java.util.ArrayList; import java.util.ListIterator; public class List Processor { public T a; public T p; public T f; public ListProcessor (T ArrayList, T Predicate, T Function) { ArrayList = a; Predicate = p; Function = f; } public void setArrayList (Tn){ this.a = n; } public void setPredicate (T n) { this.p = n; } public void setFunction (Tn){ this. f = n; } public T getArrayList() { return a; } public T getPredicate() { return p; } public T getFunction () { return f; } public String toString(){ return " < >"; import java.util.ArrayList; import java.util.ListIterator; public class List Processor { public T a; public T p; public T f; public ListProcessor (T ArrayList, T Predicate, T Function) { ArrayList = a; Predicate = p; Function = f; } public void setArrayList (Tn){ this.a = n; } public void setPredicate (T n) { this.p = n; } public void setFunction (Tn){ this. f = n; } public T getArrayList() { return a; } public T getPredicate() { return p; } public T getFunction () { return f; } public String toString(){ return " < >"; public static ArrayList //Iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()) } // if item doesn't pass test, remove it) if (!p.test(iterator.next())) iterator.remove(); return a; public static ArrayList nondestructiveFilter(ArrayList a, Predicate p) { ArrayList result = new ArrayList (); //Iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()) { destructiveFilter(ArrayList a, Predicate p) { T item iterator.next(); // if item pass if (p.test(item)) result.add(item); } return result; public static ArrayList nondestructiveFunctionApplyer (ArrayList a, Function f) { ArrayList result = new ArrayList (); //iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()){ // add result of function to the result list result.add(f.apply(iterator.next())); } return result; public static ArrayList destructiveFunctionApplyer (ArrayList a, Function f) { // iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()){ //set the current item to the result of the function iterator.set(f.apply(iterator.next())); } return a; public static ArrayList //Iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()) } // if item doesn't pass test, remove it) if (!p.test(iterator.next())) iterator.remove(); return a; public static ArrayList nondestructiveFilter(ArrayList a, Predicate p) { ArrayList result = new ArrayList (); //Iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()) { destructiveFilter(ArrayList a, Predicate p) { T item iterator.next(); // if item pass if (p.test(item)) result.add(item); } return result; public static ArrayList nondestructiveFunctionApplyer (ArrayList a, Function f) { ArrayList result = new ArrayList (); //iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()){ // add result of function to the result list result.add(f.apply(iterator.next())); } return result; public static ArrayList destructiveFunctionApplyer (ArrayList a, Function f) { // iterator ListIterator iterator = a.listIterator(); while(iterator.hasNext()){ //set the current item to the result of the function iterator.set(f.apply(iterator.next())); } return a; @FunctionalInterface public interface Function { T apply (T nexT); } @FunctionalInterface public interface Predicate { boolean test (T Next); } @FunctionalInterface public interface Function { T apply (T nexT); } @FunctionalInterface public interface Predicate { boolean test (T Next); } import java.util.ArrayList; public class Tester { public static void main(String[] args) { System.out.println("Tester: "); //Random list of 10 times ArrayList intlist= new ArrayList (); for (int i = 0; i <10; i++) intlist.add((int) (Math.random()*1000 +1)); System.out.println("inList: " + intlist); System.out.println("inList non-destructively filtered to remoe odds: a->a%2 ==0)); ListProcessor.nondestructiveFilter(intlist, System.out.println("inList: (should be unchanged): " + intlist); System.out.println("inlist destructively filtered to remove odds... "); ListProcessor.destructiveFilter(intlist,a->a%2==0); System.out.println("inlist: " + intlist); System.out.println(". -------"); // strList2 ArrayList strlist = new ArrayList (); for(int i=0; i import java.util.ArrayList; public class Tester { public static void main(String[] args) { System.out.println("Tester: "); //Random list of 10 times ArrayList intlist= new ArrayList (); for (int i = 0; i <10; i++) intlist.add((int) (Math.random()*1000 +1)); System.out.println("inList: " + intlist); System.out.println("inList non-destructively filtered to remoe odds: a->a%2 ==0)); ListProcessor.nondestructiveFilter(intlist, System.out.println("inList: (should be unchanged): " + intlist); System.out.println("inlist destructively filtered to remove odds... "); ListProcessor.destructiveFilter(intlist,a->a%2==0); System.out.println("inlist: " + intlist); System.out.println(". -------"); // strList2 ArrayList strlist = new ArrayList (); for(int i=0; i Tester: inList: [303, 598, 859, 631, 169, 769, 692, 387, 93, 63] inList non-destructively filtered to remoe odds: [598, 692] inList: (should be unchanged): [303, 598, 859, 631, 169, 769, 692, 387, 93, 63] inList destructively filtered to remove odds... inList: [598, 692] strList2: [California, Utah, New York, Idaho, Nevada, Wyoming] strList2 non-destructively filtered to remove elements containing 'a': [New York, Wyoming] strList2 (should be unchanged): [New York, Wyoming] strList destructively filtered to remove elements containig 'a'... strList2: [New York, Wyoming] Tester: inList: [303, 598, 859, 631, 169, 769, 692, 387, 93, 63] inList non-destructively filtered to remoe odds: [598, 692] inList: (should be unchanged): [303, 598, 859, 631, 169, 769, 692, 387, 93, 63] inList destructively filtered to remove odds... inList: [598, 692] strList2: [California, Utah, New York, Idaho, Nevada, Wyoming] strList2 non-destructively filtered to remove elements containing 'a': [New York, Wyoming] strList2 (should be unchanged): [New York, Wyoming] strList destructively filtered to remove elements containig 'a'... strList2: [New York, Wyoming]
Expert Answer:
Related Book For
Auditing and Assurance services an integrated approach
ISBN: 978-0132575959
14th Edition
Authors: Alvin a. arens, Randal j. elder, Mark s. Beasley
Posted Date:
Students also viewed these programming questions
-
Let A, B be sets. Define: (a) the Cartesian product (A B) (b) the set of relations R between A and B (c) the identity relation A on the set A [3 marks] Suppose S, T are relations between A and B, and...
-
Return to Better Mousetraps in Problem 18. Suppose the firm can cut its requirements for working capital in half by using better inventory control systems. By how much will this increase project NPV?...
-
Prime Time Sportswear is a custom imprinter that began operations six months ago. Sales have exceeded management's most optimistic projections. Sales are made on account and collected as follows: 50%...
-
Assume that there are two countries: USA and Europe. The exchange rate is currently $1/Euro. The US currently has external assets whose dollar value is $5000 and external liabilities with a dollar...
-
Assume that IHOP paid \(\$ 10\) per share to purchase 1,000 of its \(\$ 1\) par common as treasury stock. The purchase of treasury stock a. Decreased total equity by \(\$ 10,000\) b. Increased total...
-
One of the biggest changes in higher education in recent years has been the growth of online universities. The Online Education Database is an independent organization whose mission is to build a...
-
Solomon Company makes and sells products with variable costs of $24 each. Solomon incurs annual fixed costs of $478,800. The current sales price is $87. Note: The requirements of this question are...
-
On 1 January 20x1, Delphi Company issued 4% convertible bonds with a face value of $10,000,000 at par. The bond matured on 31 December 20x5. The bond was convertible into ordinary shares of Delphi...
-
Complete the form below by determining the depreciation expense and yearend book values for 2014 and 2015 using the 1 sumoftheyearsdigits method 2 doubledeclining balance method 2014 2015...
-
what ways do we plan to iterate and refine our strategic roadmap iteratively, leveraging insights gleaned from performance analytics and stakeholder feedback loops to drive continuous improvement ?
-
Hampton Machine Tools Company - David w. Mullins, JR. A bank lending officer must decide whether to extend and increase a loan to a small machine tool company. Case provides sufficient data for...
-
Applying Market Research 1. Research an article/website related to how a given company is applying marketing research and/or results of a recent study (no more than 3 years old). 2. Provide a summary...
-
After several profitable years running her business, Ingrid decided to acquire the assets of a small competing business. On May 1 of year 1. Ingrid acquired the competing business for $414,000....
-
What is the angle of rotational symmetry in methane? How many axis of 3-fold symmetry are there in methane? If you bisect the Hi-C-H2 angle and rotate to find a plane of symmetry, what is the angle...
-
4. The number of traffic accidents that occur in a particular road follows a Poisson distribution. As reported, 5 traffic accidents happen every 70 days on average. Please calculate the probability...
-
Problem 3.5 (4 points). We will prove, in steps, that rank (L) = rank(LT) for any LE Rnxm (a) Prove that rank (L) = rank (LTL). (Hint: use Problem 3.4.) (b) Use part (a) to deduce that that rank(L) =...
-
List five types of authorizations in the payroll and personnel cycle and state the type of misstatement that is likely to occur when each authorization is lacking.
-
Multiple Choice Questions The following questions deal with management assertions. Choose the best response. a. An auditor reviews aged accounts receivable to assess likelihood of collection to...
-
Lajod Company has an internal audit department consisting of a manager and three staff auditors. The manager of internal audits, in turn, reports to the corporate controller. Copies of audit reports...
-
Van Morrison would like to use QuickBooks Accountant for his new company, Central Coast Cellular. You choose to use QuickBooks Accountant EasyStep Interview. The companys federal tax ID is...
-
What is the purpose of setting preferences in QuickBooks Accountant?
-
Do all businesses use account numbers?
Study smarter with the SolutionInn App