java有什么比string长度更大的对象来封装数据

老王就是我 2018-04-09 06:11:37
请分别写出长度啥的。
...全文
1068 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
广寒月蛮兔 2018-04-23
  • 打赏
  • 举报
回复
String其实就是字符数组。。。。
wangxizzz 2018-04-23
  • 打赏
  • 举报
回复
数组难道不行吗,数组也可以存连续的大对象呀
老王就是我 2018-04-11
  • 打赏
  • 举报
回复
引用 4 楼 Appleyk 的回复:
[quote=引用 3 楼 Appleyk 的回复:] MapDB提供了Java映射、集、列表、队列和其他由非堆或磁盘存储支持的集合。它是java集合框架和嵌入式数据库引擎之间的混合。它是Apache许可下的免费和开放源码。 <!-- https://mvnrepository.com/artifact/org.mapdb/mapdb --> <dependency> <groupId>org.mapdb</groupId> <artifactId>mapdb</artifactId> <version>3.0.5</version> </dependency>
import org.junit.Test;
import org.mapdb.BTreeMap;
import org.mapdb.DB;
import org.mapdb.DBMaker;
import org.mapdb.Serializer;

public class DBTest {

	@Test
	public void Test(){
		
		DB db = DBMaker.fileDB("D:/data/tempdata/myDB")
				.fileMmapEnable() 
				.fileMmapEnableIfSupported() 
				.fileMmapPreclearDisable() 
				.allocateIncrement(512 * 1024 * 1024)
				.cleanerHackEnable()
				.make();


		BTreeMap<Long, int[]> myMap = db.treeMap("data")
				.keySerializer(Serializer.LONG)
				.valueSerializer(Serializer.INT_ARRAY)
				.createOrOpen();
		
		double x = 127.4521364;
		double y = 56.1452147;
		myMap.put(10001L, new int[]{(int)(x*1000000),(int)(y*1000000)});
		int[] point = myMap.get(10001L);
		
		System.err.println("Point("+point[0]/1000000d+","+point[1]/1000000d+")");
		
	}
}
效果: 数据存储在磁盘,相当于sqllite,对于内存处理对象吃紧的人来说可以尝试
[/quote] 回答错了吧?你想说啥
老王就是我 2018-04-10
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
string放堆上。可以足够大。取决于内存
就是说string可以根据内存匹配长度吗?
appleyk 2018-04-10
  • 打赏
  • 举报
回复
引用 3 楼 Appleyk 的回复:
MapDB提供了Java映射、集、列表、队列和其他由非堆或磁盘存储支持的集合。它是java集合框架和嵌入式数据库引擎之间的混合。它是Apache许可下的免费和开放源码。

<!-- https://mvnrepository.com/artifact/org.mapdb/mapdb -->
<dependency>
<groupId>org.mapdb</groupId>
<artifactId>mapdb</artifactId>
<version>3.0.5</version>
</dependency>

import org.junit.Test;
import org.mapdb.BTreeMap;
import org.mapdb.DB;
import org.mapdb.DBMaker;
import org.mapdb.Serializer;

public class DBTest {

@Test
public void Test(){

DB db = DBMaker.fileDB("D:/data/tempdata/myDB")
.fileMmapEnable()
.fileMmapEnableIfSupported()
.fileMmapPreclearDisable()
.allocateIncrement(512 * 1024 * 1024)
.cleanerHackEnable()
.make();


BTreeMap<Long, int[]> myMap = db.treeMap("data")
.keySerializer(Serializer.LONG)
.valueSerializer(Serializer.INT_ARRAY)
.createOrOpen();

double x = 127.4521364;
double y = 56.1452147;
myMap.put(10001L, new int[]{(int)(x*1000000),(int)(y*1000000)});
int[] point = myMap.get(10001L);

System.err.println("Point("+point[0]/1000000d+","+point[1]/1000000d+")");

}
}


效果:



数据存储在磁盘,相当于sqllite,对于内存处理对象吃紧的人来说可以尝试


appleyk 2018-04-10
  • 打赏
  • 举报
回复
MapDB提供了Java映射、集、列表、队列和其他由非堆或磁盘存储支持的集合。它是java集合框架和嵌入式数据库引擎之间的混合。它是Apache许可下的免费和开放源码。

<!-- https://mvnrepository.com/artifact/org.mapdb/mapdb -->
<dependency>
<groupId>org.mapdb</groupId>
<artifactId>mapdb</artifactId>
<version>3.0.5</version>
</dependency>

import org.junit.Test;
import org.mapdb.BTreeMap;
import org.mapdb.DB;
import org.mapdb.DBMaker;
import org.mapdb.Serializer;

public class DBTest {

@Test
public void Test(){

DB db = DBMaker.fileDB("D:/data/tempdata/myDB")
.fileMmapEnable()
.fileMmapEnableIfSupported()
.fileMmapPreclearDisable()
.allocateIncrement(512 * 1024 * 1024)
.cleanerHackEnable()
.make();


BTreeMap<Long, int[]> myMap = db.treeMap("data")
.keySerializer(Serializer.LONG)
.valueSerializer(Serializer.INT_ARRAY)
.createOrOpen();

double x = 127.4521364;
double y = 56.1452147;
myMap.put(10001L, new int[]{(int)(x*1000000),(int)(y*1000000)});
int[] point = myMap.get(10001L);

System.err.println("Point("+point[0]/1000000d+","+point[1]/1000000d+")");

}
}


效果:



数据存储在磁盘,相当于sqllite,对于内存处理对象吃紧的人来说可以尝试

oyljerry 2018-04-09
  • 打赏
  • 举报
回复
string放堆上。可以足够大。取决于内存

50,706

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧