问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA超长字符串问题

发布网友 发布时间:2022-05-20 16:17

我来回答

5个回答

热心网友 时间:2023-08-22 14:17

对于这样的问题,通常可以分段处理,将其按照一定的长度分割,在需要找具体位数的时候,先找到该位数所在的段,在段中在进行查找。
比如,如果以1000为单位来分段的话,100万的数据会被分为1000段,当你查找987654位的时候,
就变成987654/1000=987余654,那么就是stringbuffer[986]里,从653开始取一位对吧?
当然,这种处理,如果要做运算等处理的话,就需要写分段运算的算法了。
当然,这只是抛砖引玉,真正实践时,需要写更快的算法,比如使用多重map表制作索引等方式

热心网友 时间:2023-08-22 14:18

2种方案
1)字符串分段处理。当然这里面也有问题,如果abcd,bc被分到2个字符串里面,拿取也听不方便的。不过也不失为一个办法。

2)对于特定的内容,如果可以转化为xml,可以转化成xml,然后层层解析;取得所需要的内容。

觉得有点恐怖,怎么那么长的字符串拼接。通过tochararay那些都行不通的。数组承受不了那么多的元素。因为数组里面定义也是object[int len]的

热心网友 时间:2023-08-22 14:18

用toCharArray()方法;
首先将stringbuffer转成string类型,然后调用toCharArray(),把字符串转成字符数组;
比如:有StringBuffer stringbuffer,
String string = stringbuffer.toString();
char[] str = string.toCharArray();
Char char = str[1000000]; //第一百万个位子的字符
不知道可不可以这么长,估计应该没什么问题追问您好,你这样的话,那如果我不知道是第多少位,而是遍历这个stringbuffer,找到一段“abc”(假设长度也超过Int上限),然后返回第几位呢。。。那用for循环long k=0;k<length;k++
str[k]也不对阿。。。

热心网友 时间:2023-08-22 14:19

我狂晕了,这么大字符串还不缓冲,你当内存是硬盘啊。
public class NewClass2 {

public static void main(String[] args) throws IOException {
FileWriter fileWriter = new FileWriter(new File("c:/test.txt"));
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for (int i = 0; i < 10000000; i++) {
bufferedWriter.write("12345678901234567890");
}
bufferedWriter.flush();
bufferedWriter.close();
FileReader fileReader = new FileReader(new File("c:/test.txt"));
BufferedReader bufferedReader = new BufferedReader(fileReader);
bufferedReader.skip(1000000l);
char[] bs = new char[1];
bufferedReader.read(bs);
System.out.println(bs[0]);
}
}
随你写,我这个是2亿个字符,文件有190M只要你愿意你把硬盘写爆都行,但是读取速度绝对让你没话说。 还有楼主注意拿完数据删除文件,不然真要爆硬盘了。

热心网友 时间:2023-08-22 14:19

1.stringbuffer 内置数据是 char[],长度用的是int类型,所以数据长度不可能超过int最大值
2.stringbuffer 装int最大长度个字符所需内存4G,java不支持这么大内存,windows下最大2G左右,linux下稍微大点,不超过3G

所有你的问题是不会出现的
你可以用 stringbuffer.apend试下,最先报的错是内存溢出
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网上开户买股票流程有哪些? 迅雷会员 离线下载 云端已下载完成 请问迅雷7用迅雷会员2全选右击批量离线下载,连接服务器任务完成把迅雷一... ...之后点击了离线下载选项。问:这个选项中的直接打开与直接下载有什... 程理财个人介绍 attainachievecomplish的区别? 益盟操盘手主力版操盘手主力版简介 清华同方K431笔记本换内存条,CPU,显卡 什么货物需要销货清单 关于描写秋天的伤感唯美句子说说心情大全摘抄 晋易借款需要什么条件 易借款审核的标准是什么啊,需要哪些东西呢? java中字符串长度的方法和返回值类型分别是什么? 我删掉的好友,对方的QQ列表里还显示我吗? 武汉汉口到武汉学院光谷校区5号楼有多远 关于北大青鸟的问题 武汉光谷职业学院是位于什么街道 武汉学院附近好不好玩?发达吗?学校环境好不好?我三百分左右能上不 武汉技师学院光谷校区 怎么走 武汉学院究竟是公办还是民办 武汉学院光谷校区到光谷步行街怎么走 咬牙的咬可以组什么词 咬牙的咬组词 武汉火车站到武汉学院光谷校区怎么走 武汉职业技术学院到武武汉学院光谷校区怎么走 武汉光谷职业学院多大? 咬牙的咬能组什么词 武汉学院光谷校区到湖北工业大学(南湖校区)怎么走 武汉学院光谷校区在哪 武汉学院光谷校区怎么走 易借款提交审核了是必须要电审的吗? 信易贷的贷款申请条件 易借款的五千额度申请了就立即能取现的吗?有人清楚吗? 石田衣良的主要作品 求这个漫画的汉化名字,必赏很多分,不会不要乱说 求キメセクに败けた娼年的汉化资源! 草字头可以组什么字? 草字头跟别的字能变成什么字 草字头一个字是什么 商业文件签名一定要用正楷吗 在新房子(刚搬住的房子)里,能不能杀鸡宰鸭吗?这时间上、住新房子有什么禁忌? 入宅要家里可以杀鱼吗? 投标文件需要既签名又盖章吗? 我想咨询一下小区内进出门前能不能杀鸡,杀鸭,脱毛? 请问法律文件签名是否要求能看清自己的字? 搬新房进入时有什么讲究或仪式吗? 合同,协议,协议等哪些文件要签名和指纹要一起盖?签名只签简写或写最后个字有效吗? 新房搬家入宅 杀鸡杀鸭那天开张期会好? 常有人在我家卧室外面杀鸡杀鸭,这对风水有影响吗?