改变ArrayList<String[]>到String[][]/Object[][]桌面的最简单方法是什么?
我尝试使用size()方法,但这种类型的列表没有简单的方法get().
感谢帮助.
_rowTable[j][0] = new String[_listSelect.size()][columnCount];
for(int j=0; j < _listSelect.size(); j++)
// for(int k=0; k < columnCount; k++)
_rowTable[j][0] = _listSelect.get(0);
Run Code Online (Sandbox Code Playgroud)
如何正确使用第二个循环?
我在java中读取文件时遇到一些问题:我的文件是例如:
3,4
2
6
4
1
7
3
8
9
Run Code Online (Sandbox Code Playgroud)
第一行3和4是数组A和B的长度,然后是每个数组的元素.我做的
import java.io.*;
import java.util.Arrays;
public class Progetto {
public static void main(String args[])
{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("prova.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine = br.readLine(); // step 1
if (strLine != null) {
String[] delims = strLine.split(","); // step 2
// step 3
int[] a = new int[Integer.parseInt(delims[0])];
int[] b = new int[Integer.parseInt(delims[1])]; …Run Code Online (Sandbox Code Playgroud) 假设我编写了一个程序,它创建了很多String对象和intern()它们:
String someString = param1 + param2;
someString.intern();
Run Code Online (Sandbox Code Playgroud)
这对于一小组字符串来说很好,但是如果我尝试创建十亿个字符串String呢?(或者说亿亿亿?)据我所知,JVM 在PermGen区域为s 维护一个常量池,而PermGen没有得到GC -ed.String
因此,如果我String在循环中创建了过多的对象,但是我删除了对它们的引用,那么它们将得到GC -ed(我将用尽PermGen空间)吗?这些String都是独一无二的,没有任何重复.
我有以下课程.
class MyObject implements Serializable {
private String key;
private String val;
private int num;
MyObject(String a, String b, int c) {
this.key = a;
this.val = b;
this.num = c;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要创建一个对象列表,重复调用以下方法(比如10K或更多)
public void addToIndex(String a, String b, int c) {
MyObject ob = new MyObject(a,b,c);
list.add(ob); // List<MyObject>
}
Run Code Online (Sandbox Code Playgroud)
我使用分析器来查看内存占用,并且由于每次创建对象而增加了很多.有没有更好的方法呢?我正在将列表写入磁盘.
编辑:一旦列表完全填充,这就是我写的方式.一旦内存超出值(列表大小),是否有一种方法可以追加.
ObjectOutputStream oos = new ObjectOutputStream(
new DeflaterOutputStream(new FileOutputStream(
list)));
oos.writeObject(list);
oos.close();
Run Code Online (Sandbox Code Playgroud) 如何使用C++ tempates之类的东西替换这两个函数?
public void verify(final int[] array, final int v) {
for ( final int e : array ) if ( e == v || v == e ) return;
abort_operation();
}
public void verify(final double[] array, final double v) {
for ( final double e : array ) if ( e == v || v == e ) return;
abort_operation();
}
Run Code Online (Sandbox Code Playgroud) 我正在阅读帖子,它说使用BufferedReader或MappedByteBuffer.我决定用291.0 MB文件自己测试,但仍然无法决定
BufferedReader reader = new BufferedReader(new FileReader("/Users/rachana/part-00000"));
String line = null;
while((line = reader.readLine())!=null) {
System.out.println(line);
}
~~~~~~ Heap utilization in MB ~~~~~~
Start Date 21:10:20
End Date 21:17:48
Time used 448 second
7.50 min
Used Memory In MB:28
Free Memory:81
Total Memory:109
Max Memory:1820
Run Code Online (Sandbox Code Playgroud)
使用MappedByteBuffer
RandomAccessFile aFile = new RandomAccessFile
("/Users/rachana/part-00000", "r");
FileChannel inChannel = aFile.getChannel();
MappedByteBuffer buffer = inChannel.map(FileChannel.MapMode.READ_ONLY, 0, inChannel.size());
buffer.load();
for (int i = 0; i < buffer.limit(); i++)
{
System.out.print((char) buffer.get());
}
buffer.clear(); // …Run Code Online (Sandbox Code Playgroud) 我需要确定一个非常大的字符编码文件的大小.读取该文件需要花费大量时间.
我的理解是,当首次创建/修改文件时,大小会被缓存,因此操作系统可以在请求大小时(例如,文件管理器)快速检索该值.(例如,在win explorer中打开大文件的属性对话框时似乎很快)
假设以上情况属实,可以用Java检索吗?我原以为length()读取文件来确定大小......或者它实际上是否获得了这个缓存的大小?或者,File对象的创建是否会读取/检索缓存的大小?
我自己的研究还没有能够回答这些问题.
我理解我会得到一些帮助
谢谢
我最近阅读了一篇文章,声称使用内存映射文件可以节省调页空间.
问题1:为什么这是一个重要的好处?
也就是说,为了澄清,我会提出这个问题:
问题2:如果我有一个JVM,在标准的Linux发行版上运行(比如说)1G或RAM,而我打开一个800MB的文件 - 调页空间将占用JVM内存的百分比是多少?
此外,该文件将占用的其他资源是什么?
我想我要问的真正问题是:
问题3:在处理JVM读取的大文件时,我们如何定义"调页空间",以及内存映射文件为应用程序提供的关键(非显而易见)优点是什么(即它们何时是常规旧文件的理想替代品)流)?
我假设这与使用JVM文件内存映射实现分页的方式有关.
我必须在java中存储键值对,这样可以提高内存效率,并且在直接在文件中读写时更节省时间?
<string,double,double><string,object>中映射对象包含两个double值.<string,object>中的Hashmap,其中object包含两个double值.你也可以推荐一些其他的方法.
几乎所有平台的int都需要4个字节.Java参考怎么样?
Map<String, String> m = null;
Run Code Online (Sandbox Code Playgroud)
变量m占用32位/ 64位JVM的空间多少?
byte[] b = new byte[10];
Run Code Online (Sandbox Code Playgroud)
上面的字节数组占用10个字节,但是对b的引用需要多少额外空间?我认为b至少包括一个地址和一个长度,任何人都可以给我详细信息?