Java中提供了各种数据集合类,这些类主要用于保存复杂结构的数据。其中,ArrayList集合可以看作为动态数组,它突破普通数组固定长度,可以随时向数组中添加和移除元素,这将使数组变得更加灵活。

   ArrayList集合类的操作方法:首先是添加元素add()方法可以把任意类型的元素添加到List集合的尾部,其中元素类型任意,该方法的声明如下:

public boolean add(E element);其中element为要添加到集合中的任意类型的元素值或对象。返回值为是否成功添加数据。其次是移除元素,remove()方法可以移除集合中的指定元素,该方法的声明如下:

public boolean remove(Object object);其中object为要从集合中移除的对象,返回值为是否成功移除数据。 

  我们这次使用的是窗体类DynamicArray,在窗体中添加文本框控件,列表控件,以及添加学生,删除学生两个按钮,其中编写“添加学生”按钮的事件处理方法,在该方法中获取用户在文本框的输入字符串,然后将这个字符串添加到ArratList集合中,再调用replaceModel()方法把集合中的数据显示到窗体的列表控件中,接下来是我实现的程序清单:

package dynamicarray;
import java.awt.BorderLayout;  
import java.awt.EventQueue;  
import javax.swing.AbstractListModel;  
import javax.swing.DefaultListModel;  
import javax.swing.JFrame;  
import javax.swing.JPanel;  
import javax.swing.ListModel;  
import javax.swing.border.EmptyBorder;  
import javax.swing.JScrollPane;  
import javax.swing.JList;  
import java.awt.FlowLayout;  
import javax.swing.JButton;  
import java.awt.Dimension;  
import javax.swing.JLabel;  
import java.awt.event.ActionListener;  
import java.awt.event.ActionEvent;  
import java.util.ArrayList;  
import javax.swing.JTextField;  
import javax.swing.UIManager;  
import javax.swing.JPopupMenu;  
import java.awt.Component;  
import java.awt.event.MouseAdapter;  
import java.awt.event.MouseEvent;  
import javax.swing.JComboBox;  
  
public class DynamicArray extends JFrame {  
      
    private JPanel contentPane;  
    private final JPanel panel = new JPanel();  
      
    /** 
     * Launch the application. 
     * @param args
     */  
    public static void main(String[] args) {  
        try {  
            UIManager  
                    .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");  
        } catch (Throwable e) {  
            e.printStackTrace();  
        }  
        EventQueue.invokeLater(new Runnable() {  
            public void run() {  
                try {  
                    DynamicArray frame = new DynamicArray();  
                    frame.setVisible(true);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
    }   
    /** 
     * Create the frame. 
     */  
    public DynamicArray() {  
        setTitle("\u7528\u52A8\u6001\u6570\u7EC4\u4FDD\u5B58\u5B66\u751F\u59D3\u540D");  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        setBounds(100, 100, 337, 269);  
        contentPane = new JPanel();  
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));  
        contentPane.setLayout(new BorderLayout(0, 0));  
        setContentPane(contentPane);  
        JScrollPane scrollPane = new JScrollPane();  
        contentPane.add(scrollPane, BorderLayout.CENTER);  
        list = new JList();  
        scrollPane.setViewportView(list);  
        JPanel panel_1 = new JPanel();  
        scrollPane.setColumnHeaderView(panel_1);   
        JLabel label = new JLabel("\u5B66\u751F\u59D3\u540D\uFF1A");  
        panel_1.add(label);  
          
        textField = new JTextField();  
        panel_1.add(textField);  
        textField.setColumns(10);  
        panel.setPreferredSize(new Dimension(100, 10));  
        contentPane.add(panel, BorderLayout.EAST);  
        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));  
        JButton button = new JButton("\u6DFB\u52A0\u5B66\u751F");  
        button.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {  
                do_button_actionPerformed(e);  
            }  
        });  
        panel.add(button);  
          
        JButton button_1 = new JButton("\u5220\u9664\u5B66\u751F");  
        button_1.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {  
                do_button_1_actionPerformed(e);  
            }  
        });  
        panel.add(button_1);  
    }  
    private ArrayList<String> arraylist = new ArrayList<String>();  
    private JTextField textField;  
    private JList list;  
    protected void do_button_actionPerformed(ActionEvent e) {  
        textField.requestFocusInWindow();  
        textField.selectAll();// 选择文本框文本准备下次输入  
        String text = textField.getText();// 获取用户输入姓名  
        if (text.isEmpty())// 过滤为输入姓名的情况  
            return;  
        arraylist.add(text);// 把姓名添加到数组集合中  
        replaceModel();// 把数组集合中内容显示到界面列表控件中  
    }  
    protected void do_button_1_actionPerformed(ActionEvent e) {  
        Object value = list.getSelectedValue();// 获取列表控件的选择项  
        arraylist.remove(value);// 从数组集合中移除用户的选择项  
        replaceModel();// 把数组集合中内容显示到界面列表控件中  
    }  
    private void replaceModel() {  
        // 为列表控件设置数据模型显示数组集合中的数据  
        list.setModel(new AbstractListModel() {  
            @Override  
            public int getSize() {// 获取数组大小  
                return arraylist.size();  
            }  
              
            @Override  
            public Object getElementAt(int index) {// 获取指定索引元素  
                return arraylist.get(index);  
            }  
        });  
    }  

Java 用动态数组保存信息_java

  程序运行之后,可以输入汉字也可以输入字符串,输入过的结果会在下面的ArrayList集合中出现,删除操作同理,正确运行。