Java设置多个对象

时间:2013-12-05 15:01:51

标签: java arrays object if-statement

我知道这是一个普遍的问题,我整天都在研究这个问题,但我想知道是否可以使用'for'语句设置多个对象并避免多个if-elses。所以我有这个:

  1. 我有一个包含50个列名的String []数组。
  2. 我必须迭代这个数组并为每个名称创建一个自定义对象。此自定义对象具有一些常见数据,但有两个属性可能因列而异(例如,我有一个columnType属性,必须为我创建的每个对象特别设置)。然后我必须将这些对象添加到ArrayList。
  3. 那么我怎样才能为每个列名设置我的对象(一个对象代表一列),而不是逐个创建它们然后将它们“手动”添加到ArrayList中,或者如果我使用'for'如何避免那些if-else设置类型?

     ArrayList<MyColumnObj> arrayList = new ArrayList<MyColumnObj>;
     for (int i = 0; i < columns.length; i++) {
            Button btn = new HeaderButton(this);
            btn.setPosition(i);
            btn.setColumnName(columns[i]);
    
            int columnWidth = 150;
    
            MyColumnObj myColumnObject = new MyColumnObj(btn, columnWidth);
            myColumnObject.setTag(i);
    
            if (columns[i].equals("Column 1") {
               myColumnObject.setType("Column Number");
             } else if (columns[i].equals("Column 2") {
               myColumnObject.setType("Column Colored");
             } 
             ...
             else if (columns[i].equals("Column 50") {
               myColumnObject.setType("Column Text");
              }
    
    
            arrayList.add(myColumnObject);
        }
    

    我很感激任何答案。感谢。

3 个答案:

答案 0 :(得分:0)

使用Map<String, String>将列名称映射到setType参数。然后你就是这样做的:

for (int i = 0; i < columns.length; i++) {
    Button btn = new HeaderButton(this);
    btn.setPosition(i);
    btn.setColumnName(columns[i]);

    int columnWidth = 150;

    MyColumnObj myColumnObject = new MyColumnObj(btn, columnWidth);
    myColumnObject.setTag(i);
    myColumnObject.setType(typeMap.get(columns[i]); // typeMap contains your mappings

    arrayList.add(myColumnObject);
}

答案 1 :(得分:0)

如果你的列名是连续的,就像Array-index那样会很有用。然后:

for (int i = 0; i < columns.length; i++) {
    Button btn = new HeaderButton(this);
    btn.setPosition(i);
    btn.setColumnName(columns[i]);

    int columnWidth = 150;

    MyColumnObj myColumnObject = new MyColumnObj(btn, columnWidth);
    myColumnObject.setTag(i);

    if(columns[i].equals("Column" + i){
    myColumnObject.setType("Type" + i);
    }

    arrayList.add(myColumnObject);
}

答案 2 :(得分:0)

你必须把你的数据放在地图,键(列)值(类型) 然后选择它