Tag: 数组

找到数组中的最大差异对

我正在研究一些kata,但我无法通过所有的测试用例。 所以情况是: 给定任何数组,例如这个数组: int[] a = {2, 3, 10, 2, 4, 8, 1} ,找到数组中的最大差值对,同时确保更大的值在指数高于较低值。 在此示例中: 10是最大元素, 1是最小元素,因为10在索引2 , 1在索引6 ,因此它不计数,因为较大的对处于较低的索引处。 所以正确答案是a[0] ,而a[2] ,最大不同是10-2 。 其他要求是数组大小N介于1和1_000_000之间,任何给定a[i]介于-1_000_000和1_000_000之间 我写了这样的代码: static int maxDifference(int[] a) { //test array size if (a.length 1_000_000) return -1; int[] oldArr = Arrays.copyOf(a, a.length); Arrays.sort(a); int max = a[a.length – 1]; if (max > 1_000_000 […]

在Java中,如何对垃圾收集对象数组?

当一个对象数组不再被引用时,该数组中的对象是否也被垃圾收集了? (假设没有变量引用元素) 在这个页面中, http : //java.sys-con.com/node/376​​13它说 – “最大的危险是将一个对象放入一个集合而忘记删除它。该对象使用的内存永远不会被回收。 “ 如果确保使引用无效,为什么要无人认领该内存? 谢谢

基于列对2D整数数组进行排序

我有一个2D数组,我想根据第二列进行排序。 第一列应保持与第二列配对。 2Darrays最初如下(2×10矩阵): 0 10 1 9 2 9 3 9 4 15 5 10 6 4 7 8 8 11 9 12 我希望上面的2D数组像这样排序: 4 15 9 12 8 11 0 10 5 10 1 9 2 9 3 9 7 8 6 4 现在,我尝试调整答案: 将基于一列的二维数组排序到此代码中: Arrays.sort(theArray, new Comparator() { @Override public int compare(Integer[] int1, […]

如何使用迭代器迭代二维ArrayList?

我想使用迭代器遍历包含String对象的二维ArrayList 。 我还想以一种方式迭代,让我选择是否要通过使用boolean值水平(行)首先或垂直(列)迭代。 我怎样才能在java中实现它? 到目前为止我尝试过的。 public class IterateThis implements Iterator{ ArrayList<ArrayList> array; public IterateThis(){ array = new ArrayList<ArrayList>(); array.add(new ArrayList()); array.add(new ArrayList()); array.add(new ArrayList()); array.get(0).add(“1”); array.get(0).add(“2”); array.get(0).add(“2”); array.get(1).add(“4”); array.get(1).add(“5”); array.get(1).add(“6”); } Iterator it = array.iterator(); //This gives me an error…why? 我不知道如何实现boolean值。

如何在Java中返回临时int数组

如何设法在Java中返回临时数组(为了保存代码行,而不创建变量)。 在做启动时,我可以使用 int[] ret = {0,1}; 在做回归的时候,我无法使用 return {0,1}; 我是否想念一些东西,或者是否有一种力量典型的做法? 我有了使用new int[]作为下面的答案的想法。 那么,在启动时我们不需要new int[]是什么原因?

不同语言的数组 – 存储引用或原始对象?

我试图在使用数组时围绕原始内存在不同语言中的样子。 请考虑以下Java代码: String a = “hi”; String b = “there”; String c = “everyone”; String[] array = {a, b, c}; 显然数组是持有引用 ,而不是对象; 也就是说,在三个引用的内存中存在一个连续的数组,每个引用指向对象所在的内存中的某个其他位置。 因此,物体本身不一定是坐在三个连续的桶中; 相反,参考文献是。 现在考虑一下: String[] array = {“hi”, “there”, “everyone”} 我想在这种情况下,字符串存在于内存中的所有其他常量,然后数组保存对内存中这些常量的引用? 所以,再次,在原始内存中,数组看起来不像[‘h’, ‘i’, ‘\0’, ‘t’, ‘h’, ‘e’, ‘r’, ‘e’… (etc)] 。 (为方便起见,使用c式终止)。 相反,它更像是[‘a83a3edf’ ,’a38decd’ … (etc)] ,其中每个元素都是一个内存位置(引用)。 我在这个思考过程中得出的结论是,在Java中,你永远不能将数组想象成内存中连续对象的桶,而是连续的引用。 我想不出有什么方法可以保证对象总是在Java中连续存储。 现在考虑C: char *a = […]

平衡二叉搜索树

好吧,我想要一个二元搜索树来平衡,我知道为什么它不起作用,但我不知道如何解决它。 这就是我的平衡方法。 public void balance(){ if(isEmpty()){ System.out.println(“Empty Tree”); return; } if(!isEmpty()){ values = new Object[count()]; index = 0; createAscendingArray(root); clear(); balanceRecursive(0, index); values = null; } } private void createAscendingArray(TreeNode current){ if(current == null) return; if(current.getLeftNode() != null) createAscendingArray(current.getLeftNode()); else if(current.getRightNode() != null) createAscendingArray(current.getRightNode()); values[index] = current.getData(); index++; } private void balanceRecursive(int low, int high){ […]

更改值的方法,不返回任何内容

请问什么是改变变量内容的方法,而不返回任何内容。 例如,在java.util.Arrays类的Java java.util.Arrays ,静态方法sort在内部对数组进行排序,并将排序的数组设置为原始数组变量 (不确定)。 import static java.util.Arrays.sort; public class bs { public static void main(String [] args){ int[] arr = {3,2,4,8,2,5,33,12,19,15,20}; sort(arr); // doing this stuff <<<< and not int [] arr1 = sort(arr); } } 1 – 这种方法是否有特定术语, 和; 2 – 这在内部如何运作? 它是否删除原始变量并将已排序的值分配给具有相同名称的新变量或?? 谢谢!!

用Java打印数组

我正在编写一个方法来打印它传递的每个Object。 通过为对象调用Object.toString()方法可以正常工作,但不适用于数组。 我可以通过Object.getClass().isArray()方法找出它是否是一个数组,但我不知道如何转换它。 int[] a; Integer[] b; Object aObject = a; Object bObject = b; // this wouldn’t work System.out.println(Arrays.toString(aObject)); System.out.println(Arrays.toString(bObject));

Java – 实现数组的深层和浅层副本

我试图理解Java中浅层和深层复制的概念。 关于这个主题有很多文章和问答,但每当我尝试在真正的Java代码中实现这些概念时,我都不清楚一切。 我基于理解的答案之一就是在这个链接中 ,通过模式解释深度和浅层复制。 我将在每个案例的实施情况下向您展示: 浅拷贝: 我在我的例子中使用了System.arraycopy()方法,因为我在许多文章中读到它执行浅拷贝(以及克隆方法) public class Test { public static void main(String[] args) { NameValue[] instance1 = { new NameValue(“name1”, 1), new NameValue(“name2”, 2), new NameValue(“name3”, 3), }; NameValue[] instance2 = new NameValue[instance1.length]; // Print initial state System.out.println(“Arrays before shallow copy:”); System.out.println(“Instance 1: ” + Arrays.toString(instance1)); System.out.println(“Instance 2: ” + Arrays.toString(instance2)); // […]