001 /** 002 * SelectCases.java 003 * jCOLIBRI2 framework. 004 * @author Juan A. Recio-García. 005 * GAIA - Group for Artificial Intelligence Applications 006 * http://gaia.fdi.ucm.es 007 * 24/11/2007 008 */ 009 package jcolibri.method.retrieve.selection; 010 011 import java.util.ArrayList; 012 import java.util.Collection; 013 import java.util.Iterator; 014 015 import jcolibri.cbrcore.CBRCase; 016 import jcolibri.method.retrieve.RetrievalResult; 017 018 /** 019 * Class that stores the selectAll and selectTopK methods. 020 * 021 * @author Juan A. Recio-Garcia 022 * @author Developed at University College Cork (Ireland) in collaboration with Derek Bridge. 023 * @version 1.0 024 */ 025 public class SelectCases 026 { 027 /** 028 * Selects all cases 029 * @param cases to select 030 * @return all cases 031 */ 032 public static Collection<CBRCase> selectAll(Collection<RetrievalResult> cases) 033 { 034 Collection<CBRCase> res = new ArrayList<CBRCase>(); 035 for(RetrievalResult rr: cases) 036 res.add(rr.get_case()); 037 return res; 038 } 039 040 /** 041 * Selects top K cases 042 * @param cases to select 043 * @param k is the number of csaes to select 044 * @return top k cases 045 */ 046 public static Collection<CBRCase> selectTopK(Collection<RetrievalResult> cases, int k) 047 { 048 ArrayList<CBRCase> res = new ArrayList<CBRCase>(); 049 Iterator<RetrievalResult> cIter =cases.iterator(); 050 for(int c=0; c<k && c<cases.size(); c++) 051 res.add(cIter.next().get_case()); 052 return res; 053 } 054 055 /** 056 * Selects all cases but returns them into RetrievalResult objects 057 * @param cases to select 058 * @return all cases into RetrievalResult objects 059 */ 060 public static Collection<RetrievalResult> selectAllRR(Collection<RetrievalResult> cases) 061 { 062 return cases; 063 } 064 065 /** 066 * Selects top k cases but returns them into RetrievalResult objects 067 * @param cases to select 068 * @return top k cases into RetrievalResult objects 069 */ 070 public static Collection<RetrievalResult> selectTopKRR(Collection<RetrievalResult> cases, int k) 071 { 072 ArrayList<RetrievalResult> res = new ArrayList<RetrievalResult>(); 073 Iterator<RetrievalResult> cIter =cases.iterator(); 074 for(int c=0; c<k && c<cases.size(); c++) 075 res.add(cIter.next()); 076 return res; 077 } 078 }