0

I'm using NetBeans 8.1, trying to create a 2D array of impulse filters, each of which is an array of 128 doubles. I've generated text like this: (Note that I've replaced most of the double[] values with ... to make it easier to read).

There are about 380 of these:

double[]  left_H80e000a={0.1250000,-0.0390930,0.1328125...,0.7511292};
double[]  left_H80e030a={-0.0390930,0.1406250,-0.0390930,...0.7511292};


double[][][] left_filters={
     {left_H_40e000a,null,left_H_40e006a,left_H_40e013a,left_H_40e019a,null,left_H_40e026a,left_H_40e032a,left_H_40e039a,left_H_40e045a,null,left_H_40e051a,left_H_40e058a,left_H_40e064a,null,left_H_40e071a,left_H_40e077a,left_H_40e084a,left_H_40e090a,null,left_H_40e096a,left_H_40e103a,left_H_40e109a,null,left_H_40e116a,left_H_40e122a,left_H_40e129a,left_H_40e135a,null,left_H_40e141a,left_H_40e148a,left_H_40e154a,null,left_H_40e161a,left_H_40e167a,left_H_40e174a,left_H_40e180a}
    ,{left_H_30e000a,null,left_H_30e006a,left_H_30e012a,left_H_30e018a,left_H_30e024a,left_H_30e030a,null,left_H_30e036a,left_H_30e042a,left_H_30e048a,left_H_30e054a,left_H_30e060a,null,left_H_30e066a,left_H_30e072a,left_H_30e078a,left_H_30e084a,left_H_30e090a,null,left_H_30e096a,left_H_30e102a,left_H_30e108a,left_H_30e114a,left_H_30e120a,null,left_H_30e126a,left_H_30e132a,left_H_30e138a,left_H_30e144a,left_H_30e150a,null,left_H_30e156a,left_H_30e162a,left_H_30e168a,left_H_30e174a,left_H_30e180a}
    ,{left_H_20e000a,left_H_20e005a,left_H_20e010a,left_H_20e015a,left_H_20e020a,left_H_20e025a,left_H_20e030a,left_H_20e035a,left_H_20e040a,left_H_20e045a,left_H_20e050a,left_H_20e055a,left_H_20e060a,left_H_20e065a,left_H_20e070a,left_H_20e075a,left_H_20e080a,left_H_20e085a,left_H_20e090a,left_H_20e095a,left_H_20e100a,left_H_20e105a,left_H_20e110a,left_H_20e115a,left_H_20e120a,left_H_20e125a,left_H_20e130a,left_H_20e135a,left_H_20e140a,left_H_20e145a,left_H_20e150a,left_H_20e155a,left_H_20e160a,left_H_20e165a,left_H_20e170a,left_H_20e175a,left_H_20e180a}
    ,{left_H_10e000a,left_H_10e005a,left_H_10e010a,left_H_10e015a,left_H_10e020a,left_H_10e025a,left_H_10e030a,left_H_10e035a,left_H_10e040a,left_H_10e045a,left_H_10e050a,left_H_10e055a,left_H_10e060a,left_H_10e065a,left_H_10e070a,left_H_10e075a,left_H_10e080a,left_H_10e085a,left_H_10e090a,left_H_10e095a,left_H_10e100a,left_H_10e105a,left_H_10e110a,left_H_10e115a,left_H_10e120a,left_H_10e125a,left_H_10e130a,left_H_10e135a,left_H_10e140a,left_H_10e145a,left_H_10e150a,left_H_10e155a,left_H_10e160a,left_H_10e165a,left_H_10e170a,left_H_10e175a,left_H_10e180a}
    ,{left_H0e000a,left_H0e005a,left_H0e010a,left_H0e015a,left_H0e020a,left_H0e025a,left_H0e030a,left_H0e035a,left_H0e040a,left_H0e045a,left_H0e050a,left_H0e055a,left_H0e060a,left_H0e065a,left_H0e070a,left_H0e075a,left_H0e080a,left_H0e085a,left_H0e090a,left_H0e095a,left_H0e100a,left_H0e105a,left_H0e110a,left_H0e115a,left_H0e120a,left_H0e125a,left_H0e130a,left_H0e135a,left_H0e140a,left_H0e145a,left_H0e150a,left_H0e155a,left_H0e160a,left_H0e165a,left_H0e170a,left_H0e175a,left_H0e180a}
    ,{left_H10e000a,left_H10e005a,left_H10e010a,left_H10e015a,left_H10e020a,left_H10e025a,left_H10e030a,left_H10e035a,left_H10e040a,left_H10e045a,left_H10e050a,left_H10e055a,left_H10e060a,left_H10e065a,left_H10e070a,left_H10e075a,left_H10e080a,left_H10e085a,left_H10e090a,left_H10e095a,left_H10e100a,left_H10e105a,left_H10e110a,left_H10e115a,left_H10e120a,left_H10e125a,left_H10e130a,left_H10e135a,left_H10e140a,left_H10e145a,left_H10e150a,left_H10e155a,left_H10e160a,left_H10e165a,left_H10e170a,left_H10e175a,left_H10e180a}
    ,{left_H20e000a,left_H20e005a,left_H20e010a,left_H20e015a,left_H20e020a,left_H20e025a,left_H20e030a,left_H20e035a,left_H20e040a,left_H20e045a,left_H20e050a,left_H20e055a,left_H20e060a,left_H20e065a,left_H20e070a,left_H20e075a,left_H20e080a,left_H20e085a,left_H20e090a,left_H20e095a,left_H20e100a,left_H20e105a,left_H20e110a,left_H20e115a,left_H20e120a,left_H20e125a,left_H20e130a,left_H20e135a,left_H20e140a,left_H20e145a,left_H20e150a,left_H20e155a,left_H20e160a,left_H20e165a,left_H20e170a,left_H20e175a,left_H20e180a}
    ,{left_H30e000a,null,left_H30e006a,left_H30e012a,left_H30e018a,left_H30e024a,left_H30e030a,null,left_H30e036a,left_H30e042a,left_H30e048a,left_H30e054a,left_H30e060a,null,left_H30e066a,left_H30e072a,left_H30e078a,left_H30e084a,left_H30e090a,null,left_H30e096a,left_H30e102a,left_H30e108a,left_H30e114a,left_H30e120a,null,left_H30e126a,left_H30e132a,left_H30e138a,left_H30e144a,left_H30e150a,null,left_H30e156a,left_H30e162a,left_H30e168a,left_H30e174a,left_H30e180a}
    ,{left_H40e000a,null,left_H40e006a,left_H40e013a,left_H40e019a,null,left_H40e026a,left_H40e032a,left_H40e039a,left_H40e045a,null,left_H40e051a,left_H40e058a,left_H40e064a,null,left_H40e071a,left_H40e077a,left_H40e084a,left_H40e090a,null,left_H40e096a,left_H40e103a,left_H40e109a,null,left_H40e116a,left_H40e122a,left_H40e129a,left_H40e135a,null,left_H40e141a,left_H40e148a,left_H40e154a,null,left_H40e161a,left_H40e167a,left_H40e174a,left_H40e180a}
    ,{left_H50e000a,null,left_H50e008a,null,left_H50e016a,left_H50e024a,null,left_H50e032a,left_H50e040a,null,left_H50e048a,null,left_H50e056a,left_H50e064a,null,left_H50e072a,left_H50e080a,null,left_H50e088a,null,left_H50e096a,left_H50e104a,null,left_H50e112a,left_H50e120a,null,left_H50e128a,null,left_H50e136a,left_H50e144a,null,left_H50e152a,left_H50e160a,null,left_H50e168a,null,left_H50e176a}
    ,{left_H60e000a,null,left_H60e010a,null,left_H60e020a,null,left_H60e030a,null,left_H60e040a,null,left_H60e050a,null,left_H60e060a,null,left_H60e070a,null,left_H60e080a,null,left_H60e090a,null,left_H60e100a,null,left_H60e110a,null,left_H60e120a,null,left_H60e130a,null,left_H60e140a,null,left_H60e150a,null,left_H60e160a,null,left_H60e170a,null,left_H60e180a}
    ,{left_H70e000a,null,null,left_H70e015a,null,null,left_H70e030a,null,null,left_H70e045a,null,null,left_H70e060a,null,null,left_H70e075a,null,null,left_H70e090a,null,null,left_H70e105a,null,null,left_H70e120a,null,null,left_H70e135a,null,null,left_H70e150a,null,null,left_H70e165a,null,null,left_H70e180a}
    ,{left_H80e000a,null,null,null,null,null,left_H80e030a,null,null,null,null,null,left_H80e060a,null,null,null,null,null,left_H80e090a,null,null,null,null,null,left_H80e120a,null,null,null,null,null,left_H80e150a,null,null,null,null,null,left_H80e180a}
    ,{left_H90e000a,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null}
};    

I've had much larger arrays in past code, one of which is 26 arrays containing 60,000 strings, so I'm baffled as to why this isn't possible.

Firstly, there's no code, secondly, does anyone have a better way to embed large data structures in Java?

user3660664
  • 237
  • 3
  • 8
  • 2
    Could you load most of that data from a database instead? – JAB Sep 30 '16 at 14:47
  • 5
    There's "no code"? Where do you think all that data ends up? What do you think it *is*? – Dave Newton Sep 30 '16 at 14:47
  • I'm with JAB...what you're doing here seems like something that would be best handled by a db fetch. – Susannah Potts Sep 30 '16 at 14:48
  • 1
    write it to a file type of your choice and parse it in during runtime. What is the actually error you get? Is it complaining that the file is too large, or a particular structure in the file? – code11 Sep 30 '16 at 14:49
  • Possible duplicate of [maximum size of java class / exception table](http://stackoverflow.com/questions/5497495/maximum-size-of-java-class-exception-table) – Arnaud Sep 30 '16 at 14:51
  • Please post the error/exception you're getting. What version of Java are you using? Have you tried compiling outside the IDE, i.e. from the command line? – Paul Sep 30 '16 at 14:52
  • I could probably load it from a text file, but that's not the simplest solution, since I'd have to bind the names to the data manually. Not a big deal, but programming languages are supposed to make life easier, not harder ;-) The error message is just "code too large", I don't know which version of Java it is; but I believe it's the latest. As to "there's no code" - what I expected from a modern compiler is that it would put constant data in a separate data area, since anything else would be madness. – user3660664 Sep 30 '16 at 15:01
  • @user3660664 It still goes into the class file, because it's in the class. There are a list of absolute constraints the JVM operates under, many of which have to do with the size of things, e.g., https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11. (There are other limitations as well, but that's a starting point for your exploration.) – Dave Newton Sep 30 '16 at 15:06
  • Thank you for that. I still can't what the compiler's complaining about though ;-) – user3660664 Sep 30 '16 at 15:44

1 Answers1

0

Well there is code. This is converted to bytecode, somewhere the JVM will have to load these number in memory, you can have a guess as what the code will look like here: How does Arrays work in the ByteCode of Java

The worst solution I could think of would creating one class per array (like a Left_H80e000a class and statically calling them for your 3D arrays.

But honestly, create a CSV file and read from it. Like, you make aleft_H80e000a.csv" with the same data, read from it then put it in your 3D array. (isn't double[] left_H80e000a= readFromCSV("left_H80e000a.csv"); cleaner ?..) I guess a class file with only the 3D array should be fine.

Some comments stated to use a database. That's an idea, but there is no point building a database if that's your only use.

Community
  • 1
  • 1
Asoub
  • 2,273
  • 1
  • 20
  • 33
  • I think you're telling me it can't be done. Fair enough, I'll do something along the lines of what you suggest. – user3660664 Sep 30 '16 at 15:52