`
lujintao
  • 浏览: 3739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

大数据类型的计算

阅读更多

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

/***
 * 表示大数据类型
 * @author lujintao
 *
 */
public class BigNumber{
    //BASE指的是进制基数,好比2进制,16进制
    private static final int BASE = 10;
    private static final int LENGTH = new Integer(BASE).toString().length() - 1;
    //依次存放从低位到高位的数值
    private List<Integer> data_list = new ArrayList<Integer>();

    /**
     *
     * @param number 为一数字字符串,如 "39939399399392993939939299292992929299292999"
     */
    public BigNumber(String number){
        //校验数据有效性部分省略
        if(Pattern.matches("^\\d+$", number)){
            //获取字符串长度
            int length = number.length();
            //我们按每四个字符一组对number_inverse字符串从右至左进行分割,count存放的是分割后字符组的个数
            int count = 0;
            //记录分割后左边的第一个字符串的长度
            int first_length = 0;
            if(length % LENGTH != 0){
                count = length / LENGTH + 1;
                first_length = length % LENGTH;
            }else{
                count = length / LENGTH;
                first_length = LENGTH;
            }
           
            for(int i = 0; i < count; i++){
                String temp = "0";
                if(i == count - 1){
                    temp = number.substring(0, first_length);
                }else{
                    temp = number.substring(length - (i + 1) * LENGTH, length - i * LENGTH);
                }
                data_list.add(Integer.parseInt(temp));
            }
        }else{
            throw new IllegalArgumentException("输入的参数非法,参数中只能包含数字");
        }
    }
   
    public BigNumber(List<Integer> data_list){
        this.data_list = data_list;
    }
   
    /**
     * 求与另一个BigNumber类型的数据相加之后的结果
     * @param another_number
     * @return
     */
    public BigNumber plus(BigNumber another_number){
        BigNumber result = null;
        if(another_number != null){
            //按从低位到高位存放计算结果
            List<Integer> list = new ArrayList<Integer>();
            //同位相加后要进位的数值
            int over_number = 0;
            //计算出要循环的次数
            int count = (this.size() > another_number.size()) ? this.size() : another_number.size();
           
            for(int i = 0; i < count; i++){
                //当前大数据 参与同位运算的数据项
                int one_item = ((this.size() -1) >= i) ? this.data_list.get(i) : 0;
                //另一大数据 参与同位运算的数据项
                int another_item = ((another_number.size() -1) >= i) ? another_number.data_list.get(i) : 0;
                int sum = one_item + another_item + over_number;
                over_number = sum / BASE;
                //余数为该位上相加后应保留的结果
                list.add(sum % BASE);
            }
            if(over_number > 0){
                list.add(over_number);
            }
            result = new BigNumber(list);
        }else{
            throw new IllegalArgumentException("参数不能为空");
        }
        return result;
    }
   
    public List<Integer> getData_list() {
        return data_list;
    }
   
    /**
     * 获得以BASE为基数,数的位数
     * @return
     */
    public  int size(){
        return this.data_list.size();
    }

    /**
     * 返回大数据类型的字符串表示,最高位从最左边开始输出
     */
    public String toString(){
        StringBuilder builder = new StringBuilder();
        for(int i = data_list.size() - 1; i >= 0 ; i--){
            builder.append(format(data_list.get(i)));
        }
        return builder.toString();
    }
   
    /**
     * 返回一个整数对应的长度为LENGTH的字符串,如 LENGTH 为4时,55返回的字符串为 0055
     * @param number
     * @return
     */
    private String format(Integer number){
        StringBuilder result = new StringBuilder();
        if(number.toString().length() <= LENGTH){
            for(int i = 0; i < LENGTH - number.toString().length(); i++){
                result.append("0");
            }
        }else{
            throw new IllegalArgumentException("输入的整数过大");
        }
        result.append(number);
        return result.toString();
    }
   
    public static void main(String[] args){
        BigNumber one = new BigNumber("123456789123456789123456789");
        BigNumber another = new BigNumber("876543210876543210876543210876543210876543210876543210");
        System.out.println(one.plus(another));
    }
}

分享到:
评论

相关推荐

    基于大数据下的计算机信息处理技术探讨.pdf

    3. 数据类型多样化:数据不再局限于文本,还包括图像、视频、音频等多种形式,需要处理技术具备处理复杂多媒体数据的能力。 计算机信息处理技术在大数据背景下的实际应用包括: 1. 提高处理效率:通过优化算法和...

    大数据时代计算机专业数据库课程教学改革研究.pdf

    大数据的特点包括数据量庞大、数据类型多样化、数据产生和分析速度快以及数据价值化。这些特点对传统数据库课程内容和教学模式提出了新的挑战和要求。 首先,大数据对计算机专业数据库课程内容的影响是显而易见的。...

    大数据计算方法

    在传统的计算环境中,我们通常使用固定大小的数据类型(如int、long)来存储数值,但面对PB级甚至EB级的数据,这些类型显然力不从心。因此,大数据计算引入了新的数据表示和计算方式,如分布式计算框架(如Hadoop ...

    基于C语言的“大数据”计算研究.pdf

    "基于C语言的“大数据”计算研究" 本文介绍了基于C语言的“大数据”计算研究,旨在解决C语言中无法储存大数据的问题。文章首先介绍了问题的提出,然后介绍了解决方案,即使用结构体定义一个数组,然后使用calloc()...

    藏经阁-Blink:大数据实时计算.pdf

    藏经阁-Blink:大数据实时计算 Blink 是阿里巴巴实时计算部开发的一款大数据实时计算引擎,旨在解决大数据规模下的实时计算挑战。Blink 的主要特点是高性能、低延迟、可扩展性强等。 大数据实时计算 大数据实时...

    大数据时代计算机信息处理技术研究.docx

    大数据不仅数量上急剧增加,而且类型多样、结构复杂,这对现代计算机处理技术提出了更高层次的要求。本文主要探讨了大数据时代计算机信息处理技术的现状、挑战以及关键技术。 首先,大数据的内涵包含了云计算的发展...

    Strom实战构建大数据实时计算

    首先,书中会介绍大数据的基本概念,包括数据量、数据类型、数据价值以及大数据处理的挑战。这有助于读者理解为什么我们需要实时计算以及Storm在其中的角色。接着,将引导读者安装和配置Storm环境,了解其基本组件,...

    互联网大数据与计算.pptx

    【互联网大数据与计算】 在当今的信息时代,互联网大数据与计算已成为推动社会进步的重要驱动力。大数据,简单来说,就是海量、高增长速度、多样化的信息资源,这些数据来源于各种网络活动,如社交媒体、电子商务、...

    面向大数据的计算机软件技术探析.zip

    大数据不仅仅是数据量的增加,更是数据类型多样化、处理速度加快以及价值密度降低的体现。它要求计算机软件技术具备高效的数据存储、处理、分析和可视化能力。首先,我们来讨论大数据存储技术。传统的数据库系统在...

    阿里双十一大数据计算平台PDF

    阿里双十一大数据计算平台是阿里巴巴集团在每年双十一购物狂欢节期间,为处理海量交易数据而构建的一个强大、高效、可靠的计算平台。这个平台的核心目标是实时处理、分析和预测业务数据,确保购物节期间的系统稳定...

    第四章 大数据计算系统(第一部分)1

    传统的计算系统往往无法满足大数据的处理需求,因此大数据计算系统必须具备处理不同类型数据的能力,并能快速响应数据流的变化。 【大数据计算框架概述】 大数据计算框架是大数据计算系统的核心组成部分,它简化了...

    大数据时代计算机信息处理技术.pdf

    在信息爆炸的时代背景下,传统的计算机硬件已经不能满足大规模数据处理的需求,云计算技术通过集中存储和计算资源,提供了一种高效率、低成本的解决方案,支撑了大数据的存储和处理。 数据库技术是处理和存储大量...

    基于大数据的计算机信息处理技术探究.zip

    大数据指的是数据量巨大、类型多样、生成速度快且具有潜在价值的信息集合。这种数据的规模超出了传统数据库软件工具的获取、存储、管理和分析能力。大数据的“4V”特性——Volume(大量)、Velocity(高速)、...

    论文研究-感知大数据获取与计算的研究进展 .pdf

    感知大数据的特点主要体现在数据量巨大、数据产生速度快、数据类型多样化以及数据价值密度低等方面。由于传感器节点广泛部署,它们能够持续不断地收集数据,形成规模庞大的数据集。这些数据集往往超过了PB...

    大数据时代计算机信息处理技术分析.docx

    总结来说,大数据时代下的计算机信息处理技术涉及到数据的采集、存储、管理和分析等多个环节,涵盖了分布式计算、数据挖掘、实时分析、数据安全等多个领域。这些技术的发展不仅推动了科技进步,也为企业和社会带来了...

    大数据基础计算平台网络拓扑图-PPT美化模板.pptx

    PPT模板中可能还包括对平台架构的进一步解释,比如计算节点的类型(如Master节点、Worker节点),存储解决方案(如HDFS或对象存储),以及可能的数据流路径。这有助于非技术背景的观众理解大数据平台的运作方式。 ...

    大数据时代计算机信息处理技术探讨 (1).zip

    这四个特性分别代表了大数据的规模、处理速度、数据类型多样性和潜在价值。 3. 大数据处理技术:处理大数据的关键在于如何存储、管理和分析这些数据。常见的技术包括分布式计算框架(如Hadoop MapReduce)、流式...

    浅析大数据时代计算机信息技术的发展.docx

    大数据的核心特征包括海量规模、高速处理、类型多样、高价值信息和信息的真实可靠性。借助云计算和云存储技术,大数据能够快速收集、存储和分析来自各种终端的海量信息,挖掘其中的潜在价值。这种数据化的思维方式和...

    树状结构大数据类型的高效支持.docx

    【树状结构大数据类型及其高效支持】 随着大数据时代的到来,传统的关系型数据库已经无法满足日益复杂的数据处理需求,特别是对于那些非结构化和半结构化的数据。树状结构大数据类型,如JSON(JavaScript Object ...

Global site tag (gtag.js) - Google Analytics