数据挖掘课程设计报告

数据挖掘课程设计报告

题    目:     关联规则挖掘系统  

姓    名:         xxxxxx        

班    级:       计算机0901       

学    号:      xxxxxxxxxxx      

20##年 6 月  19 日

一、设计目的

     该程序实现了对简单数据进行频繁项集挖掘的功能,主要使用 Apriori算法,即使用候选产生发现频繁项集。通过这次编程增强编程能力。

二、设计要求

实现数据挖掘的关联规则,能够挖掘数据之间的关联信息,能够读取文件中的数据,能够保存分析结果。界面友好。

三、设计实现流程图

                    

四、实现环境

     操作系统WindowsXP 

       开发环境Netbeans7.1

       运行环境  Windows系列操作系统(装有Java运行时环境)

五、实现结果

完整输出结果:

run:

顾客1

商品A

商品B

商品C

顾客2

商品A

商品B

顾客3

商品B

商品C

顾客4

商品C

商品B

商品1

,,,,,,,,,,,,,,,,,,,,,,,,,,,,

3

***************************************************************************************************

候选集1:[商品A]  [商品B]  [商品C] 

频繁集1:[商品A]  [商品B]  [商品C] 

***************************************************************************************************

候选集2:[商品A,商品B]  [商品A,商品C]  [商品B,商品C] 

频繁集2:[商品A,商品B]  [商品B,商品C] 

***************************************************************************************************

候选集3:[商品A,商品B,商品C] 

频繁集3:

***************************************************************************************************

最大频繁集:[商品A,商品B]  [商品B,商品C] 

***************************************************************************************************

关联规则:

[商品A]=========>[商品B]   1.0

[商品B]=========>[商品A]   0.6666666666666666

[商品B]=========>[商品C]   0.6666666666666666

[商品C]=========>[商品B]   1.0

六、设计小结

      这学期学的数据挖掘课程丰富了我的知识面,让我看到了信息技术的巨大生命力和前景。数据挖掘涉及多学科技术的集成,包括数据库和数据仓库技术、统计学、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索等技术。通过数据挖掘,可以从数据库提取有趣的知识、规律或高层信息,并可以从不同角度观察或浏览它们,发现的知识可以用于做决策、过程控制、信息管理、查询处理。利用数据挖掘技术可以帮助获得决策所需的多种知识。在许多情况下,用户并不知道数据存在哪些有价值的信息知识,因此对于一个数据挖掘系统而言,它应该能够同时搜索发现多种模式的知识,以满足用户的期望和实际需要。此外数据挖掘系统还应能够挖掘出多种层次(抽象水平)的模式知识。数据挖掘系统还应容许用户指导挖掘搜索有价值的模式知识。

通过这次实践,我对数据挖掘技术有了一个整体的认识。同样在编写程序的时候也遇到了这样或那样的问题。但在老师及同学们的帮助下,艰难的完成了这个系统。这让我对数据挖掘技术以后的深入学习打下了良好的基础。同时我的编程能力进一步提高,Java方面的实战经验进一步丰富。优秀的设计要付诸实践,用户需要的是真真实实的产品,知识转化为产品,才能体现它的价值。

附录:主要代码

1、 APPF.Java    

/*

 * To change this template, choose Tools | Templates

 * and open the template in the editor.

 */

package datamining;

/**

 *

 * @author Administrator

 */

public class APPF extends javax.swing.JFrame {

    /**

     * Creates new form APPF

     */

    public APPF() {

        initComponents();

    }

    /**

     * This method is called from within the constructor to initialize the form.

     * WARNING: Do NOT modify this code. The content of this method is always

     * regenerated by the Form Editor.

     */

    @SuppressWarnings("unchecked")

    // <editor-fold defaultstate="collapsed" desc="Generated Code">

    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();

        jTable1 = new javax.swing.JTable();

        jLabel1 = new javax.swing.JLabel();

        jTextField1 = new javax.swing.JTextField();

        jLabel2 = new javax.swing.JLabel();

        jTextField2 = new javax.swing.JTextField();

        jLabel3 = new javax.swing.JLabel();

        jTextField3 = new javax.swing.JTextField();

        jButton1 = new javax.swing.JButton();

        jScrollPane2 = new javax.swing.JScrollPane();

        jTextArea1 = new javax.swing.JTextArea();

        jLabel4 = new javax.swing.JLabel();

        jLabel5 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(

            new Object [][] {

                {null, null},

                {null, null},

                {null, null},

                {null, null},

                {null, null},

                {null, null},

                {null, null},

                {null, null},

                {null, null},

                {null, null}

            },

            new String [] {

                "序列", "项目"

            }

        ));

        jScrollPane1.setViewportView(jTable1);

        jLabel1.setText("支持度:");

        jLabel3.setText("挖掘深度:");

        jButton1.setText("开始分析");

        jButton1.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                jButton1ActionPerformed(evt);

            }

        });

        jTextArea1.setColumns(20);

        jTextArea1.setRows(5);

        jScrollPane2.setViewportView(jTextArea1);

        jLabel4.setBackground(new java.awt.Color(255, 255, 255));

        jLabel4.setFont(new java.awt.Font("新宋体", 0, 36)); // NOI18N

        jLabel4.setText("数据挖掘");

        jLabel5.setText("置信度:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

        getContentPane().setLayout(layout);

        layout.setHorizontalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addGap(33, 33, 33)

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                    .addComponent(jScrollPane2)

                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

                            .addGroup(layout.createSequentialGroup()

                                .addComponent(jLabel1)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))

                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

                                .addComponent(jLabel3)

                                .addGap(41, 41, 41)

                                .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))

                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

                                .addComponent(jLabel5)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING)

                                    .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))))

                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE)

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                            .addGroup(layout.createSequentialGroup()

                                .addComponent(jButton1)

                                .addGap(69, 69, 69)

                                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE)

                                .addContainerGap())

                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

                                .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)

                                .addGap(130, 130, 130))))))

        );

        layout.setVerticalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addContainerGap()

                .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                    .addGroup(layout.createSequentialGroup()

                        .addGap(34, 34, 34)

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                            .addComponent(jLabel1)

                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

                        .addGap(24, 24, 24)

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                            .addComponent(jLabel2)

                            .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                            .addComponent(jLabel5)

                            .addComponent(jButton1))

                        .addGap(25, 25, 25)

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                            .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                            .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)))

                    .addGroup(layout.createSequentialGroup()

                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE)))

                .addGap(18, 18, 18)

                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE))

        );

        pack();

    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        

           DBManager db = new DBManager();

         TransactionContainer transactionContainer = db.getTransactionContainer(jTable1);

            Apriori apriori = new Apriori();

            //设置参数

            double support = Double.parseDouble(jTextField1.getText());

            apriori.setMinSupport(support);

            double confidence = Double.parseDouble(jTextField2.getText());

            apriori.setMinConfidence(confidence);

            int deep = Integer.parseInt(jTextField3.getText());

            apriori.setDeep(deep); //设置最大挖掘深度,否则直到不产生新频繁集而自动停止

            apriori.setContainer(transactionContainer);

            //进行分析

            apriori.analyse();

            //打印信息

            String info = apriori.printInfo();

            jTextArea1.append(info);

       

       

    }                                       

    /**

     * @param args the command line arguments

     */

    public static void main(String args[]) {

        /*

         * Set the Nimbus look and feel

         */

        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

        /*

         * If Nimbus (introduced in Java SE 6) is not available, stay with the

         * default look and feel. For details see

         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

         */

        try {

            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

                if ("Nimbus".equals(info.getName())) {

                    javax.swing.UIManager.setLookAndFeel(info.getClassName());

                    break;

                }

            }

        } catch (ClassNotFoundException ex) {

            java.util.logging.Logger.getLogger(APPF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (InstantiationException ex) {

            java.util.logging.Logger.getLogger(APPF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (IllegalAccessException ex) {

            java.util.logging.Logger.getLogger(APPF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (javax.swing.UnsupportedLookAndFeelException ex) {

            java.util.logging.Logger.getLogger(APPF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        }

        //</editor-fold>

        /*

         * Create and display the form

         */

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {

                new APPF().setVisible(true);

            }

        });

    }

  2 Apriori.java:

    private javax.swing.JButton jButton1;

    private javax.swing.JLabel jLabel1;

    private javax.swing.JLabel jLabel2;

    private javax.swing.JLabel jLabel3;

    private javax.swing.JLabel jLabel4;

    private javax.swing.JLabel jLabel5;

    private javax.swing.JScrollPane jScrollPane1;

    private javax.swing.JScrollPane jScrollPane2;

    static javax.swing.JTable jTable1;

    static javax.swing.JTextArea jTextArea1;

    private javax.swing.JTextField jTextField1;

    private javax.swing.JTextField jTextField2;

    private javax.swing.JTextField jTextField3;

    // End of variables declaration

}                              

package datamining;

import java.util.*;

public class Apriori {

    private double minSupport;  //最小支持度

    private double minConfidence; //最小置信度

    private Map container;  //交易数据容器

    private int totalSize;  //样品数据条数

    private List canditateSetList = new ArrayList(); //候选集链表

    private List frequentSetList = new ArrayList();  //频繁集链表

    private List maxFrequentSetList = new ArrayList(); //最大频繁集

    private int maxDeep = -1;

    private int curDeep = 0;

    private boolean isStop = false;

    private Set elementSet = new TreeSet();

    private List ruleList = new ArrayList();

    //设置挖掘深度,如果为-1,表明直到不产生新的频繁集才停止挖掘

    public void setDeep(int k) {

        this.maxDeep = k;

    }

    private double getMinConfidence() {

        return minConfidence;

    }

    public void setMinConfidence(double minConfidence) {

        this.minConfidence = minConfidence;

    }

    private double getMinSupport() {

        return minSupport;

    }

    public void setMinSupport(double minSupport) {

        this.minSupport = minSupport;

    }

    private Map getContainer() {

        return container;

    }

    public void setContainer(TransactionContainer transactionContainer) {

        this.container = transactionContainer.getContainer();

        this.totalSize = this.container.size();

         System.out.println(",,,,,,,,,,,,,,,,,,,,,,,,,,,,");

         System.out.println(totalSize);

    }

    private boolean isStop() {

        return this.isStop || (maxDeep > 0 && curDeep == maxDeep);

    }

    private void stopAnalyse() {

        this.isStop = true;

    }

    /**

     * 根据最小支持度,最小自信度,样品数据 进行数据分析

                                             *

     */

    public void analyse() {

        //计算候选集、频繁集

        this.makeCanditateSet1();

        this.makeFrequentSet1();

        while (!isStop()) {

            this.curDeep++; //深度+1

            this.makeCanditateSet();  //创建候选集

            this.makeFrequentSet();  //创建频繁集

        }

        //计算最大频繁集

        this.makeMaxFrequentSet();

        //计算规则

        this.makeRules();

    }

    /**

     * 创建规则

                                             *

     */

    private void makeRules() {

        int ruleNum = 0;

        for (Object form : this.maxFrequentSetList) {

            TransactionForm tf = (TransactionForm) form;

            ruleNum = (1 << tf.getItems().size()) - 2;

            for (int i = 1; i <= ruleNum; i++) {

                Rule rule = new Rule();

                TransactionForm A = new TransactionForm();

                TransactionForm B = new TransactionForm();

                int j = 0;

                Set items = tf.getItems();

                for (Object object : items) {

                    String item = (String) object;

                    if (((1 << j) & i) != 0) {

                        A.addItem(item);

                    } else {

                        B.addItem(item);

                    }

                    j++;

                }

                TransactionForm AB = new TransactionForm();

                AB.addAll(A.getItems());

                AB.addAll(B.getItems());

                if (getSupportNum(AB) >= (getSupportNum(A) * minConfidence)) {

                    double confidence = this.getSupportNum(AB) * 1.0 / this.getSupportNum(A);

                    rule.setA(A);

                    rule.setB(B);

                    rule.setConfidence(confidence);

                    this.ruleList.add(rule);

                }

            }

        }

    }

    /**

     * 计算1项候选集

                                             *

     */

    private void makeCanditateSet1() {

        Set keySet = container.keySet();

        Iterator keyIterator = keySet.iterator();

        String TID;

        TransactionForm transactionForm;

        List list = new ArrayList();  //存放1项候选集

        Set item1 = new TreeSet();

        while (keyIterator.hasNext()) {

            TID = (String) keyIterator.next();

            transactionForm = (TransactionForm) (container.get(TID));

            Set items = transactionForm.getItems();

            for (Object object : items) {

                item1.add(object);

            }

        }

        elementSet.addAll(item1);

        for (Object object : item1) {

            TransactionForm tf = new TransactionForm();

            tf.addItem(object);

            list.add(tf);

        }

        this.canditateSetList.add(list);

        this.curDeep = 1;

    }

    /**

     * 计算k项候选集

                                             *

     */

    private void makeCanditateSet() {

        //读取前一个频繁集

        List frontFrequentSetList = (List) this.frequentSetList.get(this.curDeep - 2);

        List newCanditateList = new ArrayList();

        for (Object obj : frontFrequentSetList) {

            TransactionForm tf = (TransactionForm) obj;

            for (Object item : this.elementSet) {

                Set items = new TreeSet();

                items.addAll(tf.getItems());

                items.add(item);

                if (items.size() != this.curDeep) {

                    continue;

                }

                TransactionForm newTransactionForm = new TransactionForm();

                newTransactionForm.setItems(items);

                if (this.getSupportNum(newTransactionForm) != 0) {

                    if (!isExit(newCanditateList, newTransactionForm)) {

                        newCanditateList.add(newTransactionForm);

                    }

                }

            }

        }

        this.canditateSetList.add(newCanditateList);

    }

    /**

     * 判断链表中是否存在相同的交易表单

                                             *

     */

    private boolean isExit(List list, TransactionForm newForm) {

        for (Object form : list) {

            Set curSet = ((TransactionForm) form).getItems();

            Set newSet = newForm.getItems();

            Set tempSet = new TreeSet();

            tempSet.addAll(curSet);

            int beginSize = tempSet.size();

            tempSet.addAll(newSet);

            int endSize = tempSet.size();

            if (endSize <= beginSize) {  //只要有一个集合没变大,说明已存在

                return true;

            }

        }

        return false;

    }

    /**

     * 创建最大频繁集

                                             *

     */

    private void makeMaxFrequentSet() {

        for (int i = frequentSetList.size() - 1; i >= 0; i--) {

            List list = (List) frequentSetList.get(i);

            for (Object form : list) {

                if (!isExit(maxFrequentSetList, (TransactionForm) form)) {

                    this.maxFrequentSetList.add(form);

                }

            }

        }

    }

    /**

     * 创建频繁集

                                             *

     */

    private void makeFrequentSet() {

        List frequentList = new ArrayList();

        List canditateList = (List) this.canditateSetList.get(this.curDeep - 1);

        for (Object form : canditateList) {

            TransactionForm tf = (TransactionForm) form;

            if (this.getSupportNum(tf) >= minSupport * totalSize) {

                frequentList.add(tf);

            }

        }

        this.frequentSetList.add(frequentList);

        if (frequentList.size() == 0) {

            this.stopAnalyse(); //如果没有新的频繁集,则可停止分析 

        }

    }

    /**

     * 创建频繁1项集

                                             *

     */

    private void makeFrequentSet1() {

        List canditateList = (List) canditateSetList.get(0);

        List frequentList = new ArrayList();

        for (Object object : canditateList) {

            TransactionForm tf = (TransactionForm) object;

            if (this.getSupportNum(tf) >= minSupport * totalSize) {

                frequentList.add(tf);

            }

        }

        this.frequentSetList.add(frequentList);

        if (frequentList.size() == 0) {

            this.stopAnalyse(); //如果没有新的频繁集,则可停止分析

        }

    }

    /**

     * 计算支持数 样品清单对newForm的支持数

                                             *

     */

    private int getSupportNum(TransactionForm newForm) {

        int counter = 0;

        Set keySet = container.keySet();

        Iterator keyIterator = keySet.iterator();

        String TID;

        TransactionForm transactionForm;

        while (keyIterator.hasNext()) { //该循环不可以跳出,一定要执行到结束

            TID = (String) keyIterator.next();

            transactionForm = (TransactionForm) container.get(TID);  //样品中的某一清单

            Iterator items = transactionForm.getItems().iterator();

            Iterator newItems = newForm.getItems().iterator();

            boolean isMatch = true;

            while (newItems.hasNext()) {  //配置新清单中的所有项

                String newItem = (String) newItems.next();

                boolean findItem = false;

                while (items.hasNext()) {

                    String item = (String) items.next();

                    if (newItem.equals(item)) {

                        findItem = true;

                        break;

                    }

                }

                if (!findItem) {

                    isMatch = false;

                    break;

                }

            }

            if (isMatch) {

                counter++;

            }

        }

        return counter;

    }

    /**

     * 打印分析结果信息

                                             *

     */

    public String printInfo() {

       

        for (int i = 0; i < this.curDeep; i++) {

            List list = (List) this.canditateSetList.get(i);

            if (list.size() == 0) {

                continue;

            }

            System.out.print("候选集" + (i + 1) + ":");

             info+="候选集" + (i + 1) + ":";

            for (Object object : list) {

                TransactionForm transactionForm = (TransactionForm) object;

                Set items = transactionForm.getItems();

                StringBuffer sb = new StringBuffer("[");

                for (Object item : items) {

                    sb.append(item).append(",");

                }

                sb.setCharAt(sb.length() - 1, ']');

                System.out.print(sb + "  ");

                info+=sb + "  ";

            }

            list = (List) this.frequentSetList.get(i);

            System.out.print("\n频繁集" + (i + 1) + ":");

            info+="\n频繁集" + (i + 1) + ":";

            for (Object object : list) {

                TransactionForm transactionForm = (TransactionForm) object;

                Set items = transactionForm.getItems();

                StringBuffer sb = new StringBuffer("[");

                for (Object item : items) {

                    sb.append(item).append(",");

                }

                sb.setCharAt(sb.length() - 1, ']');

                System.out.print(sb + "  ");

                 info+=sb + "  ";

            }

          System.out.println("\n***************************************************************************************************");

      

         info+="\n**********************************\n";

        }

        System.out.print("最大频繁集:");

         info+="最大频繁集:";

        for (Object object : this.maxFrequentSetList) {

            TransactionForm transactionForm = (TransactionForm) object;

            Set items = transactionForm.getItems();

            StringBuffer sb = new StringBuffer("[");

            for (Object item : items) {

                sb.append(item).append(",");

            }

            sb.setCharAt(sb.length() - 1, ']');

            System.out.print(sb + "  ");

            info+=sb + "  ";

        }

        System.out.println("关联规则:");

        info+="\n关联规则:\n";

        for (Object object : this.ruleList) {

            Rule rule = (Rule) object;

            Set items = rule.getA().getItems();

            StringBuffer A = new StringBuffer("[");

            for (Object item : items) {

                A.append(item).append(",");

            }

            A.setCharAt(A.length() - 1, ']');

            items = rule.getB().getItems();

            StringBuffer B = new StringBuffer("[");

            for (Object item : items) {

                B.append(item).append(",");

            }

            B.setCharAt(B.length() - 1, ']');

            System.out.println(A + "=========>" + B + "\t" + rule.getConfidence());

            info+=A + "=========>" + B + "\t" + rule.getConfidence()+"\n";

        }

      return info;

    }

}

3、TransactionContainer

package datamining;

import java.util.HashMap;

import java.util.Map;

public class TransactionContainer {

private Map container;

                                           

TransactionContainer(){

container = new HashMap();

}

                                           

public void addForm(TransactionForm transactionForm){

container.put(transactionForm.getTID(), transactionForm);

}

                                           

public Map getContainer(){

return container;

}

}

4、TransactionForm

package datamining;

import java.util.Collection;

import java.util.List;

import java.util.Set;

import java.util.TreeSet;

public class TransactionForm {

private String TID;

private Set items;

                                           

TransactionForm(){

this.items = new TreeSet();

}

                                           

public Set getItems() {

return items;

}

                                           

public void addItem(Object item){

this.items.add(item);

}

                                           

public void setItems(Set items){

this.items = items;

}

                                           

public void addAll(Collection collection){

this.items.addAll(collection);

}

                                           

public String getTID() {

return TID;

}

public void setTID(String tid) {

TID = tid;

}

                                           

                                           

}

相关推荐