Skip to content

donnior/fava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fava is a functional library for java, it's an extention for Java collection framework.

Use Fava List

The two essential class is FList and FArrayList. FList extends JDK's List, FArrayList extends ArrayList

Create Fava List

Create from exist list

    List originalList = ....   //JDK list
    FList fList = new FArrayList(originalList);

Because FArrayList extends ArrayList, you also can create it directly

    List<String> fList = new FArrayList<String>();
    fList.add("one");  //use jdk's function

Use Functional Operation

Suppose you have a FList contains [1,2,3,4,5]

FList<Integer> ints = FLists.create(1,2,3,4,5);

Each operation

    int.each(new Consumer<Integer>(){
        public void apply(Integer e) {
            System.out.print(e);
        }
    });

Find the first element match the Predicate

    int result = int.find(new Predicate<Integer>(){    
        public boolean apply(Integer e){
            return e > 3;
        }
    });

Find all elements match the Predicate

    FList<Integer> results = ints.findAll(new Predicate<Integer>(){
        public boolean apply(Integer e){
            return e % 2 == 0;  //the int value is even
        }
    });    

Convert list to another different type list, use map() or collect()

    FList<String> results = ints.map(new Function<Integer,String>(){
        public String apply(Integer e){
            return String.valueOf(e);
        }
    });

Test is there any element match Predicate

    boolean hasAnyBiggerThanThree = ints.any(new Predicate<Integer>(){
        public boolean apply(Integer e) {
            return e > 3;
        }
    });

Test all elements match Predicate

    boolean allBiggerThanThree = ints.all(new Predicate<Integer>(){
        public boolean apply(Integer e) {
            return e > 3;
        }
    });

Fold operation, such as sum list

    int result = ints.fold(0, new FoldFunction<Integer, Integer>(){
        public Integer apply(Integer element, Integer init) {
            return element + init;
        }
    });

There are more functions such as reject, deleteIf, please see Fava' java doc.

Functions in fava

There are three basic function shape in fava.

  • Consumer - operate on object and not return
  • Predicate - operate on object and return boolean value
  • Function - operate on object and return value with other type

About

one functional library for java

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages