Specifics
---------------------------------------------------------------------------
public interface IntegerOperation {
Integer performOperation(Integer value);
}
public class AddOneOperation implements IntegerOperation {
public class AddOneOperation implements IntegerOperation {
@Override
public Integer performOperation(Integer value)
{
return value+1;
}
}
-------------------------------------------------------------------------
Generics
-------------------------------------------------------------------------
// work with a list of any type, and return a list of a different type
// E.g., turning a String parameter into an Integer
public interface GenericOperation<A, B> {
B performOperation(A value);
}
public class StringLengthOperation implements GenericOperation<String, Integer>
{
@Override
public Integer performOperation (String value)
return value.length();
}
------------------------------------------------------------------------
for (final Integer number: numbers){
res.add(op.performOperation(number));
}
res.add(op.performOperation(number));
}
// 7-19 Write a method that replicates a list of Itnegers, with 1 added to each element. public static ListaddOne(final List numbers) { final List res = new ArrayList (numbers.size()); for ( final Integer number: numbers) { res.add(number+1); } return res; }
// To allow any Integer operation, you can define a new // interface, IntegerOperation, which has one // method, taking an Integer, and returning an Integer public interface IntegerOperation { Integer performOperation(Integer value); } public class AddOneOperation implements IntegerOperation { @Override public Integer performOperation(Integer value) { return value+1; } } // 7-20 Performa any integer operation on a list public static ListupdateList(final List numbers, final IntegerOperation op) { final List res = new ArrayList<>(number.size()); for (final Integer number: numbers) { res.add(op.performOperation(number)); } return res; } // 7-21 Testing the updateList method @ Test public void positiveList() { final List numbers = Arrays.asList(4,7,2,-2,8,-5,-7) final List expected = Arrays.asList(4,7,2,2,8,5,7); final List actual = Lists.updateList(nubmers, new IntegerOperation() { @Override public Integer performOperation(Integer value) return Math.abs(value); }); assertEquals(expected, actual); }
// 7-22 Mapping a list into a different type public static List mapList(final List values, final GenericOperation op ) { final List res = new ArrayList<>(values.size()); for (final A a: values) res.add(op.performOperation(a)); return res; } // 7-23 Testing the list mapping functionality @Test public void stringLengths() { final Liststrings = Arrays.asList("acing", "the", "java", "interview" ); final List expected = Arrays.asList(5,3,4,9); final List actual = List.mapList(strings, new StringLengthOepration() ); assertEquals(expected, actual); }
No comments:
Post a Comment