linq

Costas

Administrator
Staff member

Retrolambda: Use Lambdas on Java 7
https://github.com/orfjackal/retrolambda

Children :
https://github.com/evant/gradle-retrolambda
https://github.com/zbra-solutions/android-linq OR http://zbra-solutions.github.io/android-linq/


Retrolambda - Presentation - Use Lambdas on Java 7
https://www.youtube.com/watch?v=DUdhfPh9V_s


Using Java 8 Lambda Expressions in Android Developer Tools
https://hakanyamanyar.wordpress.com/2014/07/08/using-java-8-lambda-expressions-in-android-developer-tools/



Finally, Is it possible to use Java 8 for Android development?
http://stackoverflow.com/questions/23318109/is-it-possible-to-use-java-8-for-android-development
 

 

Bogdan Mart.Collection Query
https://bitbucket.org/mart_bogdan/collectionsquery

download - http://mvnrepository.com/artifact/com.innahema/collections-query

The query looks like in Linq:
JavaScript:
List<String> names = Queryable.from(people)
                                    .filter(p->p.age>20)
                                    .map   (p->p.name)
                                    .toList();
 

 


Functional Operations
Today I play with Bogdan Mart.CollectionsQuery</b> (which is a JAR 109kb) on eclipse with JDK v1.8 when I type the above^ example, there was an error.. At least I can use Functional Operations, the following snippet working :
JavaScript:
//the class it self :)
public class Supermarkets {
	private Boolean is_selected;

	public Boolean getIs_selected() {
		return is_selected;
	}
	public void setIs_selected(Boolean is_selected) {
		this.is_selected = is_selected;
	}

}

//the activity code
private ArrayList<Supermarkets> Frag_Settings_Supermarkets_LIST = null;
.
.
.
//returns the selected items from the list
List<Supermarkets> names = Queryable.from(Frag_Settings_Supermarkets_LIST).filter(new Predicate<Supermarkets>() {
	@Override
	public boolean apply(Supermarkets p) {
		return p.getIs_selected() == true;
	}
}).toList();
 
ProGuard rules
JavaScript:
# Keel all innahema classes
-keep class com.innahema.** { *; }
-dontwarn com.innahema.**
 
my APK filesize before collections-query-0.2.9.jar was 557kb
with collections-query-0.2.9.jar 604kb
 
The same can be done with Google.Guava (http://mvnrepository.com/artifact/com.google.guava/guava/19.0) (which is a JAR 2.5mb) via :
JavaScript:
//the class it self :)
public class Supermarkets {
	private Boolean is_selected;

	public Boolean getIs_selected() {
		return is_selected;
	}
	public void setIs_selected(Boolean is_selected) {
		this.is_selected = is_selected;
	}
}

//the activity code
private ArrayList<Supermarkets> Frag_Settings_Supermarkets_LIST = null;
.
.
.
//returns the selected items from the list
List<Supermarkets> names = Lists.newArrayList(Iterables.filter(Frag_Settings_Supermarkets_LIST, new Predicate<Supermarkets>(){

	@Override
	public boolean apply(Supermarkets p) {
		return p.getIs_selected() == true;
	}
	
}));
 
ProGuard rules
JavaScript:
# Keel all innahema classes
-keep class com.google.** { *; }
-dontwarn com.google.***
 
my APK filesize before guava-19.0.jar was 557kb
with guava-19.0.jar 1.14mb
 
 
 
similar org.apache.commons.collections - http://apachecommonstipsandtricks.blogspot.com/2009/01/examples-of-functors-transformers.html
 
Top