All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unlaxer.jaddress.util.kuromoji.Tokens Maven / Gradle / Ivy

The newest version!
package org.unlaxer.jaddress.util.kuromoji;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.BiPredicate;
import java.util.stream.Collectors;

import com.atilika.kuromoji.ipadic.Token;

public class Tokens{
		
	public final List tokens;
	
	public String  joined;

	public Tokens(List tokens) {
		super();
		this.tokens = tokens;
		joined = tokens.stream()
			.map(Token::getSurface)
			.collect(Collectors.joining());
	}

	public Tokens(Token... tokens) {
		this(List.of(tokens));
	}
	
	public List grouping(BiPredicate groupingPredicate){
		
		List results = new ArrayList();
		
		List currentList = new ArrayList();
		
		Iterator iterator = tokens.iterator();
		
		Token previous = iterator.next();
		
		currentList.add(previous);
		
		while (iterator.hasNext()) {
			
			Token next = iterator.next();
			if(groupingPredicate.test(previous, next)) {
				currentList.add(next);
			}else {
				results.add(new Tokens(new ArrayList<>(currentList)));
				currentList.clear();
				currentList.add(next);
			}
			
			previous = next;
		}
		if(false == currentList.isEmpty()) {
			results.add(new Tokens(new ArrayList<>(currentList)));
			currentList.clear();
		}
		return results;
	}

	@Override
	public String toString() {
		
		return joined;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy