Введение
Посетил вчера семинар по lambda-выражениям в JAVA 8. Рассказали много интересного.
Читать полностью »
Посетил вчера семинар по lambda-выражениям в JAVA 8. Рассказали много интересного.
Читать полностью »
В середине 2013 года выходит Java 8 с реализацией лямбда-выражений. Лямбда-выражения предоставляют широкие возможности для применения функционального стиля программирования. Правда функциональный стиль можно использовать уже сегодня в JDK 7, 6 или 5 с помощью библиотек LambdaJ и Guava.
Iterative | Lambdaj | JDK 8 lambda | Guava | |
---|---|---|---|---|
Print all brands | 79 | 472* | 113 | 79 |
Select all sales of a Ferrari | 25 | 146 | 44 | 31 |
Find buys of youngest person | 1,209 | 1,775 | 1,242 | 1,218 |
Find most costly sale | 8 | 123 | 55 | 72 |
Sum costs where both are males | 23 | 973* | 40 | 45 |
Age of youngest who bought for > 50,000 | 1,521 | 2,576* | 1,560 | 1,511 |
Sort sales by cost | 350 | 1,187 | 473 | 453 |
Extract cars original cost | 29 | 61 | 31 | 31 |
Index cars by brand | 57 | 70 | 89 | 415 |
Group sales by buyers and sellers | 2,586 | 3,748* | 2,862 | 1,601 |
Find most bought car | 744 | 1,023* | CRASH | 1,435 |
Сегодня передо мной встала задача сделать полную копию объекта, то есть DeepClone. Рассмотрим некоторый код и я покажу какие проблемы при этом могут возникнуть и как их решить.
Исходный класс:
class ClassForClone { //here are value type fields public readonly A a; public readonly Lazy<string> lazy; protected void Func1() { //to to something; } public ClassForClone(A a) { this.a = a; lazy = new Lazy<string>(() => { // some calculations Func1(); return a.SomeText; }); } }
Воспользуемся функцией побитового копирования полей объекта Object.MemberwiseClone(). Она избавляет нас от монотонной работы копирования полей, но все поля с ссылочными типамиЧитать полностью »