Java 如何删除空的对象数组?
我定义一个对象:Java 如何删除空的对象数组?,java,object,jtable,multidimensional-array,Java,Object,Jtable,Multidimensional Array,我定义一个对象: tempRes = new Object[100000][7]; 然后我把它填到100行。 现在,如何删除超过该值的每个对象(从tempRes[100]到tempRes[10000]) 我需要这个用于JTable。老实说,如果您不知道需要添加多少项,请不要使用数组。数组将为给定大小保留内存。使用列表或向量,添加项目,然后将其转换为数组。或者,如果您的用法(例如JTable)也可以使用向量,则根本不转换它 此外,如果您将数据存储在内存中的其他位置,并且列表非常庞大,那么实现您自
tempRes = new Object[100000][7];
然后我把它填到100行。
现在,如何删除超过该值的每个对象(从tempRes[100]到tempRes[10000])
我需要这个用于JTable。老实说,如果您不知道需要添加多少项,请不要使用数组。数组将为给定大小保留内存。使用
列表
或向量
,添加项目,然后将其转换为数组。或者,如果您的用法(例如JTable)也可以使用向量,则根本不转换它
此外,如果您将数据存储在内存中的其他位置,并且列表非常庞大,那么实现您自己的TableModel
子类(当您滚动到行时动态调用该子类,然后您必须根据需要构建它们)比首先将所有行渲染到一个数组中要高效得多
列表示例:
List<Object[]> tempRows = new ArrayList<Object[]>();
for (int i = 0; i < 100; i++) {
Object[] row = new Object[] {"This", "Is", "Just", "Some", "Example", "Data", "Here"};
tempRows.add(row);
}
Object[][] tempRes = (Object[][]) tempRows.toArray(new Object[tempRows.size()][]);
List tempRows=new ArrayList();
对于(int i=0;i<100;i++){
对象[]行=新对象[]{“This”、“Is”、“Just”、“Some”、“Example”、“Data”、“Here”};
添加(行);
}
对象[][]tempRes=(对象[][])tempRows.toArray(新对象[tempRows.size()][]);
老实说,如果不知道要添加多少项,就不要使用数组。数组将为给定大小保留内存。使用列表
或向量
,添加项目,然后将其转换为数组。或者,如果您的用法(例如JTable)也可以使用向量,则根本不转换它
此外,如果您将数据存储在内存中的其他位置,并且列表非常庞大,那么实现您自己的TableModel
子类(当您滚动到行时动态调用该子类,然后您必须根据需要构建它们)比首先将所有行渲染到一个数组中要高效得多
列表示例:
List<Object[]> tempRows = new ArrayList<Object[]>();
for (int i = 0; i < 100; i++) {
Object[] row = new Object[] {"This", "Is", "Just", "Some", "Example", "Data", "Here"};
tempRows.add(row);
}
Object[][] tempRes = (Object[][]) tempRows.toArray(new Object[tempRows.size()][]);
List tempRows=new ArrayList();
对于(int i=0;i<100;i++){
对象[]行=新对象[]{“This”、“Is”、“Just”、“Some”、“Example”、“Data”、“Here”};
添加(行);
}
对象[][]tempRes=(对象[][])tempRows.toArray(新对象[tempRows.size()][]);
不能调整Java数组的大小。唯一的方法是将元素复制到一个较小的数组中,然后放弃原来的数组
如果要动态调整大小,请使用ArrayList。不能调整Java数组的大小。唯一的方法是将元素复制到一个较小的数组中,然后放弃原来的数组 如果要动态调整大小,请使用ArrayList。在
java.util.Arrays
它有一个copyOf
方法,可以用来获取数组的“head”部分
String[] names = { "Alice", "Bob", "Carol", "Dean" };
names = Arrays.copyOf(names, 2);
System.out.println(Arrays.toString(names));
// prints "[Alice, Bob]"
在数组上方的列表上
有效Java第二版,第25项:首选列表而非数组
论模型/视图分离
仅仅因为JTable
使用数组进行查看,并不意味着你也应该这样对数据建模。了解模型-视图-控制器体系结构如何工作。关于java.util.Arrays
它有一个copyOf
方法,可以用来获取数组的“head”部分
String[] names = { "Alice", "Bob", "Carol", "Dean" };
names = Arrays.copyOf(names, 2);
System.out.println(Arrays.toString(names));
// prints "[Alice, Bob]"
在数组上方的列表上
有效Java第二版,第25项:首选列表而非数组
论模型/视图分离
仅仅因为JTable
使用数组进行查看,并不意味着你也应该这样对数据建模。了解模型-视图-控制器体系结构如何工作。您需要分页表模型。这会根据滚动到的位置动态地从数据库中获取数据。使用带有LIMIT语句的SQL查询将其链接到SQL数据库。代码将非常相似。您需要分页表模型。这会根据滚动到的位置动态地从数据库中获取数据。使用带有LIMIT语句的SQL查询将其链接到SQL数据库。代码将非常相似。Eee gad,这是一个大数组。我想知道为什么你们的要求如此之高。为什么需要一个包含700000个元素的数组?我对一个数据库进行查询,该数据库最多返回10000个结果。但大多数搜索返回多达100个结果。所以我知道我从数据库(SQLite)中得到了多少行,然后我删除了所有超过这些行的行。不要一次存储所有行。您可以使用一种机制,仅加载(使用限制)用户在表中滚动到的位置的结果。显示10000个结果只会使应用程序瘫痪。Eee gad,这是一个大阵列。我想知道为什么你们的要求如此之高。为什么需要一个包含700000个元素的数组?我对一个数据库进行查询,该数据库最多返回10000个结果。但大多数搜索返回多达100个结果。所以我知道我从数据库(SQLite)中得到了多少行,然后我删除了所有超过这些行的行。不要一次存储所有行。您可以使用一种机制,仅加载(使用限制)用户在表中滚动到的位置的结果。显示10000个结果只会使应用程序瘫痪。