package jef.database.wrapper.clause; import java.sql.SQLException; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import jef.database.jdbc.rowset.CachedRowSetImpl; import jef.database.jdbc.rowset.Row; /** * 在内存中实现结果集去重 * @author jiyi * */ public class InMemoryDistinct implements InMemoryProcessor{ public static InMemoryDistinct instance=new InMemoryDistinct(); private InMemoryDistinct(){ } public void process(CachedRowSetImpl rows) throws SQLException { Set<Row> newRows=new LinkedHashSet<Row>(); for(Row row: rows.getRvh()){ newRows.add(row); } rows.setRvh(null);//先释放掉 List<Row> result=Arrays.asList(newRows.toArray(new Row[newRows.size()])); rows.setRvh(result); rows.refresh(); } public String getName() { return "DISTINCT"; } }