从大量文本字段中获取和打印数据的最佳方法是什么?

时间:2012-02-20 10:14:24

标签: java jtextfield

我正在尝试找出从大约60个文本字段读取数据的最佳方法,然后以间隔线打印。

例如

System.out.println(field1.getText()+“”+ field2.getText());

问题是,我不想有一个getText()方法的垃圾负载。

所以我的主要问题是,是否有一种更简单,也许更好(以性能为导向)的方法来做到这一点?

图像: my text fields

4 个答案:

答案 0 :(得分:1)

您可以使用StringBuilder而不是字符串连接来获得更好的性能:

StringBuilder s = new StringBuilder();
s.append(field1.getText()).append(" ")
 .append(field2.getText()).append(" ")
 .append(field3.getText());
System.out.println(s.toString());

如果您的字段存储在一个集合中,您可以迭代该集合而不是调用每个字段:

List<JTextField> fields = new ArrayList<JTextField> ();
for(int i = 0; i < 30; i++) {
    fields.add(new JTextField(Integer.toString(i)));
}
//...
StringBuilder s = new StringBuilder();
for (JTextField t : fields) {
    s.append(t.getText()).append(" ");
}
//...

答案 1 :(得分:1)

我想不出任何其他表现更好的方法。

首先,

  • 使用TextField数组或列表来保存所有文本字段。那么你 可以使用for循环迭代它们。

其次,

  • 尽可能使用StringBuilder。

答案 2 :(得分:0)

  1. 将您的字段添加到数组或集合中,然后在for-each循环中迭代它们,打印出输出。

  2. 对类使用反射,通过某些命名约定来标识字段,如正则表达式textField.+

  3. 编写自己的注释,使其在运行时可保留,并注释要访问的每个字段,然后使用反射迭代类字段,检查注释,并打印文本字段的值(如果它)附有注释。

  4. 具有良好的命名约定/模式,2是最好的。 3.有点重量级,但非常精确和灵活。 1.也是一个快速而简单的黑客。

答案 3 :(得分:0)

您可以尝试使用反射。性能方面,它会慢一些:

public class Snippet {

    JTextField field1 = new JTextField("1");
    JTextField field2 = new JTextField("2");

    JTextField field3 = new JTextField("3");
    JTextField field4 = new JTextField("4");

    // add more fields here

    public static void main(String[] args) throws Exception {
        new Snippet().run();
    }

    private void run() throws Exception {
        for (int i = 1; i <= 4; i += 2) {
            JTextField textfieldA = getTextField(i);
            JTextField textfieldB = getTextField(i + 1);
            System.out.println(textfieldA.getText() + " " + textfieldB.getText());
        }
    }

    private JTextField getTextField(int i) throws NoSuchFieldException, IllegalAccessException {
        Field field = Snippet.class.getDeclaredField("field" + i);
        JTextField textfield = (JTextField) field.get(this);
        return textfield;
    }
}

这很快,很脏,从长远来看,最好将文本字段放入适当的数据结构(例如List或Map),然后简单地迭代它。