`

一个分组程序实现

阅读更多
http://www.jdom.org/docs/apidocs/index.html


import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 *  提供分组功能,分成若干组,用List保存每组信息
 *  已知条件:1)WANGYUAN总数 ;2)要分多少组 pages
 *  需要计算每组放多少个网ID 
 *  
 *  计算bujiang要分多少组可以参考下面  getPageCount()方法,bujiang分多少组 也就是把WANGYUAN 分多少组
 * @author hongwei
 *
 */
public class PageHandler {
	
	public static final int DEFAULT_PAGE_SIZE = 1; //WANGYUAN 默认不分组,就只一组
	
	public static final int DEFAULT_COMPONET_SIZE = 10000; //默认不分组,就只一组
	
	private List source; //存要分页的 WANGYUAN ID

	
	private int pageSize = DEFAULT_PAGE_SIZE; //每页存多少个WANGYUAN ID是根据计算得来的
	
	private int componetSize = DEFAULT_COMPONET_SIZE; 
	
	private int page = 0; //0 默认不分组,这里指的是 WANGYUAN 要分的组数,他等于bujiang要分的组数, bujiang要分多少组可以参考下面  getPageCount()方法
	
	/**
	 * Set the source list for this holder.
	 */
	public void setSource(List source) {
		//需要判断List不为空
		this.source = source;
		
	}
	public int getComponentSize(){
		return componetSize;
	}
	
	public List getSource() {
		return this.source;
	}

	
	/**
	 * 返回 WANGYUAN 的总数目
	 */
	public int getNetOfElements() {
		return getSource().size();
	}
    
	public int getComponentOfElements( Test test ){
		int componet_count=test.queryComponetRecord();
		return componet_count;
	}
	
	/**
	 * 设置每组的要存的 WANGYUAN 个数,不像其他分页那样指定,而是由WANGYUAN ID总数/要分的页数计算得来再存进去。
	 * pageSize什么时候初始比较合适
	 */
	public void setPageSize(int pageSize) {
		if (pageSize != this.pageSize) {
			this.pageSize = pageSize;
			
		}
	}
	
	/**
	 * 返回每页的要存的 WANGYUAN 个数 pageSize,
	 * 
	 *  已知条件:1)WANGYUAN 总数 ;2)要分多少组 pages
	 *  pageSize= WANGYUAN 总数/要分多少组 pages
	 *  
	 */
	public int getPageSize() {
		return this.pageSize;
	}
	
	/**
	 * 设置当前组号
	 * Page numbering starts with 0.
	 */
	public void setPage(int page) {
		this.page = page;
		
	}
   
	/**
	 * 返回总共分的组数,getNrOfElements_component bujiang的总数
	 */
	public int getPageCount( ) {
		
		float nrOfPages = (float) getComponentOfElements(new Test()) / getComponentSize(); //bujiang总数 /指定每组bujiang条数
		return (int) ((nrOfPages > (int) nrOfPages || nrOfPages == 0.0) ? nrOfPages + 1 : nrOfPages);
	}
	/**
	 * 返回 WANGYUAN 分组每组数据大小
	 */
	public int getPageSizeCount( int sumPages) {
		float pageSize = (float)getNetOfElements()/sumPages; 
		
		float nrOfPages = (float) getComponentOfElements(new Test()) / getComponentSize(); //bujiang总数 /指定每组bujiang条数
		
		return (int) ((pageSize > (int) pageSize || pageSize == 0.0) ? pageSize + 1 : pageSize);
	}
	/**
	 * 返回当前组号
	 * Page numbering starts with 0.
	 */
	public int getPage() {
		if (this.page >= getPageCount()) {
			this.page = getPageCount() - 1;
		}
		return this.page;
	}

	/**
	 * Return the element index of the first element on the current page.
	 * Element numbering starts with 0.
	 */
	public int getFirstElementOnPage() {
		return (getPageSize() * getPage());
	}

	/**
	 * Return the element index of the last element on the current page.
	 * Element numbering starts with 0.
	 */
	public int getLastElementOnPage() {
		int endIndex = getPageSize() * (getPage() + 1);
		int size = getNetOfElements();
		return (endIndex > size ? size : endIndex) - 1;
	}

	/**
	 * 返回当前组的List
	 */
	public List getPageList() {
		return getSource().subList(getFirstElementOnPage(), getLastElementOnPage() + 1);
	}
	
	public List getTestTableSource( ){
		
		List list=null;
		return list;
	}
	/**
	 * 
	 * @param source WANGYUAN 总数
	 * @param sumPages 要分多少组
	 * @return
	 */
	public List handlePages(List source, int sumPages){
		
	
        setSource(source);
		//int sumPages=getPageCount();
		List groupList = new ArrayList(); //存放组
		pageSize=getPageSizeCount(sumPages);
		setPageSize(pageSize); //初始化当前组的数据
		//每组存放条数= WANGYUAN总数/要分多少组 pages
		System.out.println("每组存放记录条数:"+ pageSize);
		List  pageList; //存放同组记录 

	    for(int groupId=0; groupId<sumPages; groupId++){
	    	//初始化当前分组信息 setPageSize
	    	//初始化 pageSize(每组存放的网数据),  groupId当前组
	    	
	    	setPage(groupId); //初始化当前组
	    	
	    	pageList= new ArrayList();
	    	pageList = getPageList();//获取当前分组的数据
	    	
	    	groupList.add(pageList);
	    }
		for(int i=0; i<4; i++){
			List categoryList =(List) groupList.get(i);
		    
		    Iterator it = categoryList.iterator();
		    while (it.hasNext()){
		    	System.out.println("the category data:"+it.next());
		    }
		    System.out.println("****************************");
		}
	    
		return groupList;
	}
	
	
	public static void main(String args[]){
		PageHandler handler = new PageHandler();
		Test test = new Test();
		handler.handlePages(test.queryTestTableCategory(), handler.getPageCount());
		System.out.println("the size is:"+ test.queryTestTableCategory().size() );
	}
	
}







import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class Test{


	public static Connection getConnection_mydb(){
		Connection conn=null;
			try{
				conn=DriverManager.getConnection("jdbc:mysql://localhost/mydb?" +
				"user=root&password=12345678");
			}catch(Exception ex){
				ex.printStackTrace();
			}
			
		return conn;
		}
	
	public static Connection getConnection_backuptable(){
		Connection conn=null;
			try{
				conn=DriverManager.getConnection("jdbc:mysql://localhost/backuptable?" +
				"user=root&password=12345678");
			}catch(Exception ex){
				ex.printStackTrace();
			}
			
		return conn;
		}
	
	public  int  queryComponetRecord( ){
		
		ResultSet rs = null;
		Statement stmt=null;
		
		List componet_list = new ArrayList();
		try {
			stmt = Test.getConnection_mydb().createStatement();
			rs = stmt.executeQuery("SELECT id FROM testtable");
			while(rs.next()){
				
				rs.getString("id");
				componet_list.add(rs.getString("id"));
				
			}
			
			
		}catch (SQLException ex){
			ex.printStackTrace();
		}
		int count= componet_list.size();
		return componet_list.size();
	}
	
	
public  List  queryTestTableCategory( ){
		
		ResultSet rs = null;
		Statement stmt=null;
		
		List category_list = new ArrayList();
		try {
			stmt = Test.getConnection_mydb().createStatement();
			rs = stmt.executeQuery("SELECT t.category FROM mydb.testtable t where t.category is not null group by category ");

			while(rs.next()){
				rs.getString("category");
				category_list.add(rs.getString("category"));
				
			}
			
			
		}catch (SQLException ex){
			ex.printStackTrace();
		}
		
		return category_list;
	}
	
	public static void main(String args[]){
		
		
		int flag=0;
		ResultSet rs = null;
		Statement stmt=null;
		
		try {
			stmt = Test.getConnection_mydb().createStatement();
			rs = stmt.executeQuery("SELECT * FROM testtable");
			while(rs.next()){
				System.out.println("the name is:"+rs.getString(2)+"the address is"+rs.getString("address"));
				System.out.println("the result is"+(String)rs.getString(1));
			}
		}catch (SQLException ex){
			//handle any errors
			System.out.println("SQLException: " + ex.getMessage());
			System.out.println("SQLState: " + ex.getSQLState());
			System.out.println("VendorError: " + ex.getErrorCode());
		}
		finally {
		//it is a good idea to release
		//resources in a finally{} block
		//in reverse-order of their creation
		//if they are no-longer needed
		if (rs != null) {
		try {
		rs.close();
		} catch (SQLException sqlEx) { } // ignore
		rs = null;
		}
		if (stmt != null) {
		try {
			stmt.close();
		} catch (SQLException sqlEx) { } // ignore
		stmt = null;
		}	
	}
		
		Test test = new Test();
		flag=2;
		test.batchInsertData(flag);
		
	}
	
	public void batchInsertData(int flag){
		 Connection con=null;
		 PreparedStatement preparedStatement= null;

		   try{
			   if(flag == 1){
				   
				   con=getConnection_mydb();
				   preparedStatement=con.prepareStatement("insert into testtable(id,name,address) values(?,?,?)");	  
			   }
			   else if(flag == 2){
				  
				   con=getConnection_backuptable();
				   preparedStatement=con.prepareStatement("insert into testtable2(b_id,b_name,b_address) values(?,?,?)");  
			   }
			   else{
				   System.out.println("the db without selected");
			   }
			    int size = 100100;

			   for (int i = 100000; i < size; i++ ) {
			   preparedStatement.setInt(1, i);
			   preparedStatement.setString(2, "sheng_xu" + i);
			   preparedStatement.setString(3, "JiangXi_WuHan" + i);
			   preparedStatement.addBatch();
			   }

			   preparedStatement.executeBatch();

			   preparedStatement.close();
			   con.close();
		   }catch(Exception ex){
			   ex.printStackTrace();
			   
		   }
		   

		
	}
	
	}


DROP TABLE IF EXISTS `mydb`.`testtable`;
CREATE TABLE  `mydb`.`testtable` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(45) NOT NULL,
  `address` varchar(45) NOT NULL,
  `category` varchar(45) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;




补充点数据库知识,临时自己参考:
mysql:

alter table mydb.testtable
add( contract int(5), orderNumber varchar(45));
用一个表中的字段更新另一个字段
  update   mydb.testtable t set t.orderNumber = substring( t.name,1,7)


update mydb.testtable set orderNumber ="zixiang" where name

oracle:
用一个表中的字段更新另一个字段
  update   mydb.testtable t set t.orderNumber = substring( t.name,1,7)

alter  table mydb.testtable
add( contract int(5), orderNumber varchar(45));
分享到:
评论

相关推荐

    比赛分组小程序

    【比赛分组小程序】是一款...总之,“比赛分组小程序”是一个结合了随机数生成、数据结构应用、逻辑控制等多个编程概念的实用工具。通过理解和掌握这些知识点,不仅可以完成此项目,还能为日常的编程工作打下坚实基础。

    用程序和芯片实现分组密码算法-DES和AES

    DES是一种基于分组的对称密钥加密算法,它将64位的明文数据块与一个64位的密钥(实际上只有56位有效,其余8位用于奇偶校验)结合,通过一系列复杂的替换和置换操作,转换为64位的密文。这一过程可逆,即使用相同的...

    Python编写的随机分组小程序

    例如,random.sample()函数可以从一个序列中随机选取指定数量的不重复元素,这在进行分组时非常有用。如果`N`不是`n`的整数倍,我们可以先创建一个包含所有人的列表,然后使用random.sample()将人随机分配到小组。 ...

    VB源码:比赛分组程序

    标题“VB源码:比赛分组程序”揭示了这是一个基于Visual Basic (VB) 开发的软件,用于组织和管理比赛的分组过程。这个程序的核心功能是实现抽签式的分组,确保比赛的公平性。它能从一个名为“list.txt”的文本文件中...

    js实现分组随机显示程序

    在JavaScript编程领域,"js实现分组随机显示程序"是一个常见的需求,特别是在开发网页互动功能或者数据处理应用时。这个小程序的核心目标是根据输入的起始和结束号码,将一系列数字进行随机分组。这样的功能可能应用...

    BJTU程序设计分组训练实验三

    BJTU程序设计分组训练实验三是一个精心设计的实践环节,它不仅加强了学生们在编程领域的专业技能,而且还着重培养了团队合作与项目管理的能力。该实验环节之所以能够在学生中获得高分评价,是因为它有效地模拟了实际...

    随机分组(菜鸟程序)

    4. **分组**:创建一个空列表来存储分好的组,然后遍历随机化后的列表,每`group_size`个元素作为一个小组,将其添加到结果列表中。这个过程可以用循环和切片操作完成。 ```python groups = [] for i in range(0, ...

    Java在Excel中创建多级分组、折叠或展开分组的实现

    Java在Excel中创建多级分组、折叠或展开分组的实现是指通过Java程序在Excel中创建多级分组、折叠或展开分组的方法。在Excel中,分组可以对行或列进行分组,并设置明细数据是否展开或折叠。本文将介绍通过Java程序在...

    C#随即分组程序采用ArrayList数组编写

    在本案例中,我们将探讨如何使用ArrayList来实现一个随机分组程序。 首先,我们需要导入必要的命名空间,如`System`和`System.Collections`,因为ArrayList属于`System.Collections`命名空间。接着,定义一个...

    LabVIEW的(74)分组码编码与解码实现

    内容概要:这是基于LabVIEW设计的无线通信系统,这部分主要为使用(74)分组码实现的编码、解码的系统,通过对图片实现编码后经过模拟的高斯噪声信道进行传输,然后再接收端解码后再恢复图片。并且可以选择观看是否...

    活动随机分组小程序-VBS-第一版

    这个程序有BUG,已修改,从这里下载吧...1.每次搞活动都需要分组,比如20个人分3个组,如何才能更公平的分组,想到的只能是随机分组程序。 2.时间关系并没有实现男女平衡的分组,有时间的哥们可以自己实现。

    VB制作的随机分组工具

    在这个项目中,我们看到的是利用VB开发的一个随机分组工具,这个工具的主要功能是帮助用户进行人员的随机分组,简化了传统的手动分组过程,提高了效率。 首先,我们需要理解VB中的核心概念。在VB中,程序由各种对象...

    MFC对人员随机分组程序代码

    在这个“MFC对人员随机分组程序代码”中,我们主要探讨的是如何利用MFC来处理Excel数据,并实现人员的随机分组功能。 首先,我们需要理解如何在MFC应用中读取Excel数据。这通常涉及到使用Microsoft的COM(Component...

    vue+Java 实现附件分组下载压缩包(csdn)————程序.pdf

    在本文中,我们将探讨如何使用Vue.js前端框架和Java后端服务来实现一个功能,即允许用户按组下载附件并将其打包成一个压缩文件。这个功能对于处理大量相关文件的项目非常有用,例如在文档管理系统或在线协作平台中。...

    C#做的随机分组小程序(亦可用于抽签,摇奖)

    本篇文章将深入探讨一个基于C#制作的随机分组小程序,它能应用于抽签、摇奖等场景,非常适合初学者学习和实践。 首先,我们要理解C#语言的基础。C#是一种面向对象的编程语言,由微软公司开发,主要应用于.NET框架。...

    微信小程序ExpandableListView分组

    包含类似ExpandableListView分组实现,以及Restful api封装,详情请移步https://blog.csdn.net/She_lock/article/details/81178426。可下载直接运行看效果

    IP分组流量分析程序

    开发一个IP分组流量分析程序,实现以下功能:捕获并分析通过本地网卡的IP分组,输入捕获IP分组的时间限制,输出每个IP分组头部的主要字段(包括版本、总长度、协议、源地址与目的地址等),协议字段需要区分出具体...

    Vc MFC RandX 人员随机分组程序范例源代码.rar

    一个VC 6.0程序,采用 MFC技术实现对人员的随机分组,RandX用法,实习分组小程序,作者:方毅。  程序使用时需要从Excel中导入数据,数据格式没有发现说明文件,这个需要自己根据代码判断。另外本程序的“关于”...

    微信小程序实现通讯录功能wxSortPickerView.zip

    在这个“微信小程序实现通讯录功能wxSortPickerView.zip”压缩包中,我们很显然将要探讨的是如何在微信小程序中构建一个通讯录功能,特别是涉及到使用`wxSortPickerView`组件来实现这一功能。 首先,通讯录功能在...

    线性分组码的编译码MATLAB程序实现

    根据线性分组码的编译码原理,通过MATLAB程序对其进行实现

Global site tag (gtag.js) - Google Analytics