Я использую эту команду:
sed 's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\(\r\?\)$/\1/' inputfile
для изменения огромных файлов csv в соответствии с моими потребностями (см. delete ';' в конце каждой строки ).
Бывает, что в некоторых csv-файлах есть " -)
Вот пример кода, иллюстрирующий мою проблему:
import java.util.*;
public class GenericQuestion {
interface Function {R apply(F data);}
static class Fruit {int id; String name; Fruit(int id, String name) {
this.id = id; this.name = name;}
}
static class Apple extends Fruit {
Apple(int id, String type) { super(id, type); }
}
static class Pear extends Fruit {
Pear(int id, String type) { super(id, type); }
}
public static void main(String[] args) {
List apples = Arrays.asList(
new Apple(1,"Green"), new Apple(2,"Red")
);
List pears = Arrays.asList(
new Pear(1,"Green"), new Pear(2,"Red")
);
Function fruitID = new Function() {
public Integer apply(Fruit data) {return data.id;}
};
Map appleMap = mapValues(apples, fruitID);
Map pearMap = mapValues(pears, fruitID);
}
public static Map mapValues(
List values, Function function) {
Map map = new HashMap();
for (V v : values) {
map.put(function.apply(v), v);
}
return map;
}
}
Как удалить общее исключение из этих вызовов:
Map appleMap = mapValues(apples, fruitID);
Map pearMap = mapValues(pears, fruitID);
Дополнительный вопрос: как удалить ошибку компиляции, если я объявляю функцию fruitId следующим образом:
Function fruitID = new Function() {public Integer apply(Fruit data) {return data.id;}};
Меня очень смущает обобщение, когда речь идет об иерархии. Мы будем очень благодарны за любой указатель на хороший ресурс об использовании и.