Tag: 数组

deepHashCode与字节数组

出于某种原因, Arrays.deepHashCode()不能与byte[] 。 还有其他等价物吗?

在Object 中为元素分配多少内存

考虑以下情况 int[] anArray = new int[10]; 在堆上为每个32位的 10个元素分配内存。对吗? 那么如果元素类型是Object,那么元素的大小是多少。 ?? 喜欢 Object[] objArray = new Object[10]; 堆上现在分配了多少内存? 我只是怀疑ArrayList的源代码。 private transient Object[] elementData; 刚在我的机器上尝试过这一行 List s = new ArrayList(Integer.MAX_VALUE); 结果 Exception in thread “main” java.lang.OutOfMemoryError: Requested array size exceeds VM limit at java.util.ArrayList.(Unknown Source) at com.nextenders.server.guice.actions.servlets.Test.main(Test.java:13) 所以我想知道分配了多少内存。

用随机数填充我的数组?

我在测试类中将随机数放入数组时遇到了麻烦。 代码在java中。 我无法单独完成,因为最终我必须使用多达600个值来填充数组。 这是测试类: import java.util.Random; public class test { /** * @param args */ public static void main(String[] args) { int size = 1000; int max = 5000; int[] array = new int[size]; int loop = 0; Random generator = new Random(); //Write a loop that generates 1000 integers and //store them in the […]

为什么数组大小声明使用“1”作为第一个索引?

关于C#/ Java,我注意到的一点似乎是(对我而言)与数组大小声明和数组大小的默认第一索引不一致的问题。 使用数组时,假设您要创建一个大小为3的新整数数组,它将如下所示: int[] newArray = new int[3] {1, 2, 3}; 完全找到并且可读……对吗? 编程语言的标准似乎要求“第一”索引为0 。 使用该逻辑,如果我有兴趣创建一个大小为3的数组,我应该写这个: int[] newArray = new int[2] {1, 2, 3}; 等一下…… VS正在抛出一个错误,说an array initialize of length 2 is expected 。 因此循环数组和数组大小声明的第一个索引是不一致的? 前者使用基于0的索引,第二个使用第1个索引。 这不是任何forms或方式的游戏破坏/改变,但我真的很好奇为什么这里存在差异,或者地狱,如果这甚至是一个问题(就像我说的那样,它不会以任何方式破坏游戏,但我很好奇为什么这样做了)。 我现在可以想到为什么会使用基于1的索引的原因: 在for循环中,您将使用< newArray.Length而不是< newArray.Length – 1或< newArray.Length 。 使用List s一段时间然后回到size-needs-be-declared-arrays会让我有些措手不及。

如果将结果数组分配给变量,它是否为匿名数组

(我正在攻读Java助理考试OCJP 7) 一个问题要求选择非法初始化的例子。 其中一个答案是: – int [] k= new int[2]{5,10}; 解释说,在创建匿名数组时,指定数组的大小是非法的。 据我所知,这不是一个匿名数组,因为它被命名为“k”。 调用如下方法: – operateOnArray(new int[]{5,10}); 本来是一个匿名数组的例子,因为它没有被声明。 我可以看到“2”使其成为非法 – 但这并不是匿名的, 有人可以告诉我吗?

通过对象/类中的特定成员对对象数组进行排序

假设我有一个看起来像这样的类(get / set omited): class InfoClass{ String name; String place; double distance; } 我在我的主要活动中创建了一个类的数组,如下所示: InfoClass[3] myInfoClass; myInfoClass[0].name = “venue one”; myInfoClass[0].place = “place one”; myInfoClass[0].distance = 11.23234; myInfoClass[1].name = “venue two”; myInfoClass[1].place = “place two”; myInfoClass[1].distance = 9.2345643; myInfoClass[2].name = “venue three”; myInfoClass[2].place = “place three”; myInfoClass[2].distance = 5.23432; 我如何对我的数组(myInfoClass [])进行排序,以便它由距离成员排序? 即在上面的例子中,数组会被反转,因为元素[2]的距离最小,元素[0]的距离最大? 是否有一些function可以添加到我的class级来执行此操作或其他方式?

为什么创建一个大型Javaarrays会占用如此多的内存?

为什么以下行 Object[] objects = new Object[10000000]; 导致JVM使用大量内存(~40M)? 有什么方法可以在分配数组时了解VM的内部工作原理吗?

将’int’转换为’long’或使用’long’访问太长的数组

假设我有一个足够长的数组,可以用int访问它的任何索引,有没有办法用int来访问这样一个数组的索引? 以及Java如何处理这种数组? 例: int[] a = new int[]{1,5,2,4……..9,2,1} 假设在上面的数组中, 9,2,1处于超出int (2 31 )范围的索引处。 我如何访问这些元素?

用Java排序数组

用Java编写静态方法: public static void sortByFour (int[] arr) 它接收一个充满非负数(零或正数)的数组作为参数,并按以下方式对数组进行排序: 在数组的开头,将出现所有可被4整除的数字。 在它们之后,将出现数组中除以4且余数为1的所有数字。 在它们之后,将显示数组中除以4且余数为2的所有数字。 在数组的末尾,将出现所有剩余数字(除以4除以3的数字)。 (每组中数字的顺序无关紧要。) 该方法必须尽可能高效。 以下是我写的,但不幸的是它不能很好地工作…… 🙁 public static void swap( int[] arr, int left, int right ) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } public static void sortByFour( int[] arr ) { int left = 0; int right = ( […]

如何在Java中正确定义链表数组?

我尝试在Java中定义一个链表列表,如下所示,它编译得很好,但它生成了2条警告消息。 LinkedList [] hashtable = new LinkedList[10]; warning: [rawtypes] found raw type: LinkedList LinkedList [] hashtable = new LinkedList[10]; ^ missing type arguments for generic class LinkedList where E is a type-variable: E extends Object declared in class LinkedList HashTable.java:13: warning: [unchecked] unchecked conversion LinkedList [] hashtable = new LinkedList[10]; ^ required: LinkedList[] found: LinkedList[] […]