在bean中设置数组值的任何优化技术?

时间:2012-11-16 05:49:27

标签: java arrays performance javabeans

我得到一个固定大小的数组,比如说20。

我必须在bean属性中设置每个数组元素,因此我的bean有20个属性。

这是我目前的做法:

Object[] record = { "0", "1", "2", ...."19" };

for (int j = 0; j < record.length; j++) {
    if (j == 0) {
        bean.setNo((String) record[j]);
    }
    if (j == 1) {
        bean.setName((String) record[j]);  
    }
    if (j == 2) {
        bean.setPhone((String) record[j]);  
    }
    // so on and so forth...
}

这就是我如何从数组中设置bean的每个属性。

这里我有20个数组元素。

所以要设置第20个元素,它检查20个条件。性能问题..

赞赏任何优化技术......

提前致谢...

3 个答案:

答案 0 :(得分:2)

这样做的一种方法是:

试试这个::

     Object[] record = BeanList.get(i);
     int j = 0;
     bean.setNo((String) record[j++]);
     bean.setName((String) record[j++]);  
     bean.setPhone((String) record[j++]);

.............. ................ .............

答案 1 :(得分:2)

设置bean值的另一种方法。这需要commons-beanutils.jar作为依赖。

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;

public class BeanUtilsTest {

    // bean property names
    private static String[] propertyNames = { "name", "address" };

    public static void main(String[] args) throws IllegalAccessException,
            InvocationTargetException {
        // actual values u want to set
        String[] values = { "Sree", "India" };
        MyBean bean = new MyBean();
        System.out.println("Bean before Setting: " + bean);

        // code for setting values
        for (int i = 0; i < propertyNames.length; i++) {
            BeanUtils.setProperty(bean, propertyNames[i], values[i]);
        }
        // end code for setting values
        System.out.println("Bean after Setting: " + bean);
    }

    public static class MyBean {
        private String name;
        private String address;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        @Override
        public String toString() {
            return "MyBean [address=" + address + ", name=" + name + "]";
        }


    }
}

答案 2 :(得分:-1)

你可以使用Switch代替这些if语句

for( int j =0; j < record.length; j++) {
     switch (j){
           case 1 :  bean.setNo((String) record[j]);break;
           case 2 :  bean.setNo((String) record[j]);break;
           ....
           ....
    }
}