2

我有一个简单的数据结构

class Triple<S,V,O>{
 private S s;
 private V v;
 private O o;

 ... //constructor

 private Object getParameter(int index){
  switch(index){
  case 0: return s;
  case 1: return v;
  case 2: return o;
 }
}

然后我有一组三元组Set<Triple> tripleSet;

我有一个函数可以从一组三元组中的特定索引处创建一组元素。

public Set<Object> extractColumn(Set<Triple> tripleSet, int index){
 Set<Object> columnElements = new HashSet<Object>();
 for(Triple t : tripleSet){
   columnElements.add(t.get(index);
 }
 return columnElements;
}

现在,每当我提取一列时,它就是一组对象,当使用返回集中的对象时,我必须将其转换为相应的类型。是否有一种通用的方式来编码这个数据结构和提取元素的函数?

4

1 回答 1

2

参数化每个提取方法怎么样?例如:

public <TypeS> Set<TypeS> extractColumnS(Set<? extends Triple<TypeS, ?, ?>> tripleSet) {
  Set<TypeS> columnElements = new HashSet<TypeS>();
  for (Triple<TypeS, ?, ?> t : tripleSet) {
    columnElements.add(t.getS());
  }
  return columnElements;
}

这是对其中一条评论的跟进,为您的三元组的每个元素创建吸气剂。

于 2013-08-16T18:13:15.957 回答