001package javax.visrec.ml.data; 002 003import java.util.ArrayList; 004import java.util.Arrays; 005import java.util.Iterator; 006import java.util.List; 007import java.util.Random; 008import java.util.stream.Collectors; 009 010/** 011 * Basic implementation of {@link DataSet} interface 012 * 013 * @author Zoran Sevarac 014 */ 015public class BasicDataSet<E> implements DataSet<E>{ 016 017 private List<E> items; 018 private Column[] columns; 019 020 /** 021 * Creates an instance of {@link BasicDataSet} 022 * @param cols columns of the data set. 023 */ 024 public BasicDataSet(Column[] cols) { 025 this.columns = cols; 026 items = new ArrayList<>(); 027 } 028 029 /** 030 * Creates an instance of {@link BasicDataSet} 031 * @param elements items of the data set. 032 */ 033 public BasicDataSet(List<E> elements) { 034 this.items = elements; 035 } 036 037 @Override 038 public DataSet<E> add(E item) { 039 items.add(item); 040 return this; 041 } 042 043 @Override 044 public DataSet<E> addAll(DataSet<E> items) { 045 this.items.addAll(this.items); 046 return this; 047 } 048 049 @Override 050 public E get(int index) { 051 return items.get(index); 052 } 053 054 @Override 055 public void clear() { 056 items.clear(); 057 } 058 059 @Override 060 public boolean isEmpty() { 061 return items.isEmpty(); 062 } 063 064 @Override 065 public int size() { 066 return items.size(); 067 } 068 069 @Override 070 public DataSet<E>[] split(int parts) { 071 throw new UnsupportedOperationException("not implemented"); 072 } 073 074 @Override 075 public DataSet<E>[] split(int parts, Random rnd) { 076 throw new UnsupportedOperationException("not implemented"); 077 } 078 079 @Override 080 public DataSet<E>[] split(double... parts) { 081 throw new UnsupportedOperationException("not implemented"); 082 } 083 084 @Override 085 public DataSet[] split(Random rnd, double... parts) { 086 throw new UnsupportedOperationException("not implemented"); 087 } 088 089 090 // this shuld go to utilities class or default method? 091 public String[] getTargetLabels() { 092 List<String> targetLabels = Arrays.asList(columns).stream() 093 .filter((col) -> col.isTarget()) 094 .map((col) -> col.getName() ) 095 .collect(Collectors.toList()); 096 return targetLabels.toArray(new String[0]); 097 } 098 099// public void setColumnNames(String[] labels) { 100// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 101// } 102 103 @Override 104 public Iterator<E> iterator() { 105 return items.iterator(); 106 } 107 108 @Override 109 public List<E> getItems() { 110 return items; 111 } 112 113 114 115}