0

我想在 Java 中创建一个表/列表,我想知道处理它的最佳方法是什么。该表应具有如下结构:

Term     propertyList         entitiesList 

a1      p1=1, p2=2, p3=2          T1,T2  
a2      p5=0, p4=5 ,p3=3          T2,T1 
a3      p1=1 ,p4=3, p3=9          T3,T1,T2
...
a10

我有一个包含 10 个术语的列表,每个术语都有一个属性列表(带有 key 和 value 的深度),属性可以在一个或多个实体中。

我需要一些关于如何创建它的帮助,例如我应该使用列表、映射、集合等。如何在代码中将硬编码值作为文字添加到它们,以及从中读取数据的最佳方式是什么,考虑到性能,考虑到稍后我需要对每个实体使用它并找到参与每个术语的相关属性。

4

2 回答 2

0

看起来您可以具有以下结构:

class Term {
    String id;
    Map<String, String> properties;
    List<Entity> entities; // (or Set<Entity> if no duplicates are allowed)
}

但是,您所说的“深”和“属性可以在一个或多个实体中”的含义还不是很清楚。

于 2012-11-20T16:11:22.830 回答
0

首先创建Term类。

所以你有条款列表:List<Term>

学期类

public class Term {
   private String mName = "";
   private Map<String, Integer> mPropertyMap = new LinkedHashMap<String, Integer>();
   private List<String> mEntitiesList = new ArrayList<String>();

   public Term(String name) {
       mName = name;
   }

   public void generate(Map<String, Integer> propertyMap,   List<String> entitiesList) {
    mPropertyMap = propertyMap;
    mEntitiesList = entitiesList;
   }

  public Map<String, Integer> getPropertyMap() {
    return mPropertyMap;
}

public void setPropertyMap(Map<String, Integer> propertyMap) {
    this.mPropertyMap = propertyMap;
}

public List<String> getEntitiesList() {
    return mEntitiesList;
}

public void setEntitiesList(List<String> entitiesList) {
    this.mEntitiesList = entitiesList;
}

public String getName() {
    return mName;
}

public void setmName(String name) {
    this.mName = name;
}

}

主班

 public class MyClass {

private List<Term> mTermList = null;

private void init() {
    mTermList = new ArrayList<Term>();
}


private void addSomeTerm() {
     Map<String, Integer> propertyMap = new LinkedHashMap<String, Integer>();

     propertyMap.put("p1", 1);
     propertyMap.put("p2", 2);
     propertyMap.put("p3", 3);

     List<String> entitiesList = new ArrayList<String>();
     entitiesList.add("T1");
     entitiesList.add("T2");


     Term term = new Term("a1");
     term.generate(propertyMap, entitiesList);

     mTermList.add(term);
}

private String printTerms() {

    StringBuilder buff = new StringBuilder();

    for(Term currTerm : mTermList){

        buff.append(currTerm.getName()).append("     ");

        Map<String, Integer> propertyMap = currTerm.getPropertyMap();


        Set<String> sets = propertyMap.keySet();

        Iterator<String> itr = sets.iterator();

        String key = null;
        Integer value = null;

        while(itr.hasNext()){

            key = itr.next();               
            value = propertyMap.get(key);

            buff.append(key + "=" + value).append(",");
        }

        buff.setLength(buff.length()-1); // remove last ','

        buff.append("     ");

        List<String> entitiesList = currTerm.getEntitiesList();

        for(String str : entitiesList){
            buff.append(str).append(",");
        }

        buff.setLength(buff.length()-1); // remove last ','         

    }

    return buff.toString();
}


/**
 * @param args
 */
public static void main(String[] args) {

    MyClass m = new MyClass();
    m.init();

    m.addSomeTerm();

    System.out.println(m.printTerms());
}

}

输出:

 a1     p1=1,p2=2,p3=3     T1,T2
于 2012-11-20T16:14:11.300 回答