GenericStructTools.java

package eu.javaexperience.struct;

import java.util.ArrayList;
import java.util.Collection;

import eu.javaexperience.reflect.Mirror;

public class GenericStructTools
{
	public static <A,B,C> GenericStruct3<A, B, C> getWhereCIs(Collection<GenericStruct3<A, B, C>> rows, C searchFor)
	{
		for(GenericStruct3<A, B, C> row:rows)
		{
			if(Mirror.equals(row.c, searchFor))
			{
				return row;
			}
		}
		
		return null;
	}
	
	public static <A,B extends Comparable<B>,R extends GenericStruct2<A,B>> R getWhereBMax(Collection<R> rows)
	{
		B max = null;
		R r = null;
		for(R row:rows)
		{
			if(null == max)
			{
				max = row.b;
				r = row;
			}
			
			if(null != max && null != row.b)
			{
				if(max.compareTo(row.b) < 0)
				{
					max = row.b;
					r = row;
				}
			}
		}
		
		return r;
	}
	
	public static void main(String[] args)
	{
		ArrayList<GenericStruct2<Integer, Integer>> rows = new ArrayList<>();
		rows.add(new GenericStruct2<Integer,Integer>(0,0));
		rows.add(new GenericStruct2<Integer,Integer>(0,1));
		rows.add(new GenericStruct2<Integer,Integer>(0,5));
		rows.add(new GenericStruct2<Integer,Integer>(0,2));
		rows.add(new GenericStruct2<Integer,Integer>(0,1));
		
		System.out.println(getWhereBMax(rows).b);
		
	}
}