package test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
/**
* @Author cc
* @create 2022/5/9 15:53
*/
public class h extends JFrame implements ActionListener {
//使用列表框存储整数集合,进行集合并、差、交运算,如图所示
JList<Integer> list1, list2, list3;
JComboBox cb, cb1;
JButton b1, b2, b3;
TextField tf1, tf2;
JLabel x1, x2;
DefaultListModel dlm1, dlm2, dlm3;
public void init() {
list1 = new JList<Integer>();
list1.setPreferredSize(new Dimension(150, 300));
list1.setBorder(BorderFactory.createTitledBorder("集合1"));
list1.setBackground(Color.white);
list2 = new JList<Integer>();
list2.setPreferredSize(new Dimension(150, 300));
list2.setBorder(BorderFactory.createTitledBorder("集合2"));
list3 = new JList<Integer>();
list3.setPreferredSize(new Dimension(150, 300));
list3.setBorder(BorderFactory.createTitledBorder("答案"));
//动态添加数据
dlm1 = new DefaultListModel();
list1.setModel(dlm1);
dlm2 = new DefaultListModel();
list2.setModel(dlm2);
dlm3 = new DefaultListModel();
list3.setModel(dlm3);
Panel p2 = new Panel();
JPanel jp1 = new JPanel();
jp1.add(list1);
p2.add(jp1);
add(p2, BorderLayout.WEST);
cb = new JComboBox();
cb.addItem("+");
cb.addItem("-");
cb.addItem("*");
JPanel p3 = new JPanel();
cb.setPreferredSize(new Dimension(50, 30));
cb.setFont(new Font("宋体", Font.BOLD, 20));
p3.add(cb);
cb.addActionListener(this);
p3.add(list2);
add(p3, BorderLayout.CENTER);
JPanel p = new JPanel();
b1 = new JButton("=");
b1.addActionListener(this);
p.add(b1);
p.add(list3);
add(p, BorderLayout.EAST);
x1 = new JLabel("整数");
tf1 = new TextField(10);
b2 = new JButton("添加");
b2.addActionListener(this);
x2 = new JLabel("整数");
tf2 = new TextField(10);
b3 = new JButton("添加");
b3.addActionListener(this);
Panel p1 = new Panel();
p1.add(x1);
p1.add(tf1);
p1.add(b2);
p1.add(x2);
p1.add(tf2);
p1.add(b3);
add(p1, BorderLayout.SOUTH);
setVisible(true);
setSize(700, 400);
}
public static void main(String[] args) {
new h().init();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b2) {
int t = Integer.parseInt(tf1.getText());
if (!dlm1.contains(t)) {
dlm1.addElement(t);
}
tf1.setText("");
}
if (e.getSource() == b3) {
int t = Integer.parseInt(tf2.getText());
if (!dlm2.contains(t)) {
dlm2.addElement(t);
}
tf2.setText("");
}
if (e.getSource() == b1) {
String s = cb.getSelectedItem().toString();
int q[] = new int[1000000];//桶排序
if (s.equals("+")) {
dlm3.clear();
for (int i = 0; i < dlm1.getSize(); i++) {
int t = Integer.parseInt(dlm1.getElementAt(i).toString());
//dlm3.addElement(t);
q[t]++;
}
for (int i = 0; i < dlm2.getSize(); i++) {
int t = Integer.parseInt(dlm2.getElementAt(i).toString());
//dlm3.addElement(t);
q[t]++;
}
for(int i=0;i<q.length;i++) {
if (q[i] == 2) {
dlm3.addElement(i);
}
}
}else if (s.equals("-")) {
dlm3.clear();
for (int i = 0; i < dlm1.getSize(); i++) {
int t = Integer.parseInt(dlm1.getElementAt(i).toString());
dlm3.addElement(t);
}
for (int i = 0; i < dlm2.getSize(); i++) {
int t = Integer.parseInt(dlm2.getElementAt(i).toString());
if(dlm3.contains(t)){//如果包含 则删除
dlm3.removeElement(t);
}
}
}else if (s.equals("*")) {
dlm3.clear();
for (int i = 0; i < dlm1.getSize(); i++) {
int t = Integer.parseInt(dlm1.getElementAt(i).toString());
if(!dlm3.contains(t)) {
dlm3.addElement(t);
}
}
for (int i = 0; i < dlm2.getSize(); i++) {
int t = Integer.parseInt(dlm2.getElementAt(i).toString());
if(!dlm3.contains(t)) {
dlm3.addElement(t);
}
}
}
}
}
}
使用列表框存储整数集合,进行集合并、差、交运算,如图所示
于 2022-05-10 16:32:16 首次发布