gpt4 book ai didi

java - java中10000 * 400点的热图

转载 作者:行者123 更新时间:2023-12-01 07:39:31 24 4
gpt4 key购买 nike

我想向用户展示一张包含 10000 * 400 个图 block 的热图。我的程序中的当前状态是我有一个 JComponent 类。在此 JComponent 中,我有图 block 的 Image 实例。如果我有一个 300 * 300 矩阵,则程序使用 800 到 1000 MB 内存。这太过分了。

我还能做什么或者有人可以显示这么大的热图的控件吗?

今天我测试了JHeatChart ,它创建一个 BufferedImage 。 10000 * 400 矩阵的大小不到 400 MB,但全类需要超过 15 分钟才能创建它。这太长了。

有人知道或知道可以处理数据的控件吗?

最佳答案

由于这将是一张 map ,因此您无需为每个图 block 创建一个组件。其中许多可以重复使用。您想要做的是在应用程序初始化期间,创建所有可能组件的映射,然后在每个图 block 上传递对该组件的引用。

这是一个例子。

public class HeatMap{

private static List<JComponent> tiles = new ArrayList<JComponent>();
private List<JComponent> heatmap = new ArrayList<JComponent>();
private Random rand = new Random();

static{
tiles.add(new JLabel("Cold"));
tiles.add(new JLabel("Hot"));
tiles.add(new JLabel("Warm"));
}

public HeatMap(){
for(int i=0; i<10000; i++){
for(int j=0; j<400; j++){
heatmap.add(tiles.get(rand.nextInt(3)));
}
}
}
}

在上面的例子中,我们只需要创建 3 个图 block ,其余的都是对这些图 block 的引用。这种方法应该有助于减少内存使用量。

关于java - java中10000 * 400点的热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7010833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com