如何创建深表/列表以及从/向其插入/读取数据

时间:2012-11-20 16:06:12

标签: java

我想用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个术语,每个术语都有一个属性列表(深,键和值),属性可以在一个或多个实体中。< / p>

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

2 个答案:

答案 0 :(得分:0)

看起来你可以有以下结构:

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

但是,“深度”和“属性可以在一个或多个实体中”的含义并不十分清楚。

答案 1 :(得分: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