Я пытался реализовать функционально аналогичен CollectionUtils transform (Apache Commons Collections)преобразования коллекции <myClass> в коллекции <String>
class CollectionUtils {
public static void transformerModifier(Collection<MyClass> myCollection) {
// How should I implement this method in order that
// output from the line 1 and line 2 will be the same ?
}
public static List<String> transform(Collection<MyClass> myCollection) {
List<String> strCollection = new LinkedList<>();
for (MyClass item : myCollection) {
strCollection.add(item.getName());
}
return strCollection;
}
}
class myClass {
private String name;
private int value;
myClass(String name, int value) {
this.name = name ;
this.value = value;
}
public String toString(){
return new String(name+ ":" + value) ;
}
}
class MyClassCollection{
private List<myClass> list ;
myClassCollection(List<myClass> list){
this.list = list;
}
List<myClass> collection(){
return list.clone();
}
}
public class TestClass{
public static void main (String[] args) {
List<MyClass> list = new ArrayList<>();
list.add(new myClass("John", 12);
list.add(new myClass("Mike", 16);
list.add(new myClass("Eric", 13);
list.add(new myClass("Mark", 142);
list.add(new myClass("Alex", 112);
MyClassCollection myOjb = new MyClassCollection(list);
CollectionUtils.transformerModifier(myObj.collection());
List<MyClass> myList = CollectionUtils.transform(myObj.collection());
System.out.println(Arrays.toString(myObj.collection().toArray)); // line 1
System.out.println(Arrays.toString(myList.toArray)); // line 2
}
}
output: [John,Mike,Eric,Mark,Alex] // output after line 1
output: [John,Mike,Eric,Mark,Alex] // should be output after line 2
Мой вопрос можно ли реализовать метод transformerModifier в способе, которым он изменит коллекцию объекта myObj так что myObj.collection() возвращают не List<myClass>
но список List<String>
(где строка - это данные от private String name
данные члена myClass
)?
Я предполагаю, что решение должно быть выполнено через анонимный класс. Тем не менее, я еще не понял, как мне его реализовать.