Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于处理2D点、数组、列表或其他数据的Java数据结构?_Java_Ruby_Arrays_Data Structures - Fatal编程技术网

用于处理2D点、数组、列表或其他数据的Java数据结构?

用于处理2D点、数组、列表或其他数据的Java数据结构?,java,ruby,arrays,data-structures,Java,Ruby,Arrays,Data Structures,我是一名Ruby开发者,多亏了Android平台,我会给Java一个机会 我有一组二维点[p1,p2,p3,p4…p10],我想重新排列这个集合,按点的x值升序排序。在Ruby中,我会这样做: points.sort! {|a,b| a.x <=> b.x} 实现这一点的最佳Java实践是什么 点是否应该存储在数组中,以及我设计的排序和插入机制 或者已经存在用于此目的的结构?(哪一个,用于简化在现有元素之间插入另一个元素,以及按其属性排序元素) 我知道互联网上有大量的Java资源,

我是一名Ruby开发者,多亏了Android平台,我会给Java一个机会

我有一组二维点[p1,p2,p3,p4…p10],我想重新排列这个集合,按点的x值升序排序。在Ruby中,我会这样做:

points.sort! {|a,b| a.x <=> b.x}
实现这一点的最佳Java实践是什么

点是否应该存储在数组中,以及我设计的排序和插入机制

或者已经存在用于此目的的结构?(哪一个,用于简化在现有元素之间插入另一个元素,以及按其属性排序元素)


我知道互联网上有大量的Java资源,但我想知道对这类问题有实践经验的人的意见。

有整本书专门讨论您的问题(数据结构),但我会尽量保持简单。有许多选项,如堆排序、qucksort、合并排序、二叉树等。。。但与其学习这些方法,我建议使用简单的内置功能

数组。排序(pa);使用元素的自然顺序将基元类型数组的元素按升序排序

数组。排序(pa、from、to)对基元类型的元素pa[from]…pa[to-1]进行排序。按升序排列

数组。排序(oa)使用Comparable接口定义的顺序将对象类型数组的元素按升序排序,该接口定义compareTo方法。请注意,许多Java类,如String(但不是StringBuffer)、Double、, BigInteger等

数组。排序(oa、from、to)按升序对数组的元素进行排序,对象类型的范围从…到

数组。排序(oa、comp);使用比较器comp将对象类型数组的元素按升序排序

import java.util.Arrays;

public class Dblsrt {
    //========================================================= main
    public static void main(String[] args) {
        //... 1. Sort strings - or any other Comparable objects.
        String[] names = {"Zoe", "Alison", "David"};
        Arrays.sort(names);
        System.out.println(Arrays.toString(names));

        //... 2. Sort doubles or other primitives.
        double[] lengths = {120.0, 0.5, 0.0, 999.0, 77.3};
        Arrays.sort(lengths);
        System.out.println(Arrays.toString(lengths));
    }
}
数组。排序(oa、from、to、comp)使用比较器comp将对象类型的从…到…范围内的数组元素按升序排序

import java.util.Arrays;

public class Dblsrt {
    //========================================================= main
    public static void main(String[] args) {
        //... 1. Sort strings - or any other Comparable objects.
        String[] names = {"Zoe", "Alison", "David"};
        Arrays.sort(names);
        System.out.println(Arrays.toString(names));

        //... 2. Sort doubles or other primitives.
        double[] lengths = {120.0, 0.5, 0.0, 999.0, 77.3};
        Arrays.sort(lengths);
        System.out.println(Arrays.toString(lengths));
    }
}
输出:

[Alison, David, Zoe]
[0.0, 0.5, 77.3, 120.0, 999.0]
恭维


为了更详细的了解,

有整本书专门讨论您的问题(数据结构),不过我会尽量保持简单。有许多选项,如堆排序、qucksort、合并排序、二叉树等。。。但与其学习这些方法,我建议使用简单的内置功能

数组。排序(pa);使用元素的自然顺序将基元类型数组的元素按升序排序

数组。排序(pa、from、to)对基元类型的元素pa[from]…pa[to-1]进行排序。按升序排列

数组。排序(oa)使用Comparable接口定义的顺序将对象类型数组的元素按升序排序,该接口定义compareTo方法。请注意,许多Java类,如String(但不是StringBuffer)、Double、, BigInteger等

数组。排序(oa、from、to)按升序对数组的元素进行排序,对象类型的范围从…到

数组。排序(oa、comp);使用比较器comp将对象类型数组的元素按升序排序

import java.util.Arrays;

public class Dblsrt {
    //========================================================= main
    public static void main(String[] args) {
        //... 1. Sort strings - or any other Comparable objects.
        String[] names = {"Zoe", "Alison", "David"};
        Arrays.sort(names);
        System.out.println(Arrays.toString(names));

        //... 2. Sort doubles or other primitives.
        double[] lengths = {120.0, 0.5, 0.0, 999.0, 77.3};
        Arrays.sort(lengths);
        System.out.println(Arrays.toString(lengths));
    }
}
数组。排序(oa、from、to、comp)使用比较器comp将对象类型的从…到…范围内的数组元素按升序排序

import java.util.Arrays;

public class Dblsrt {
    //========================================================= main
    public static void main(String[] args) {
        //... 1. Sort strings - or any other Comparable objects.
        String[] names = {"Zoe", "Alison", "David"};
        Arrays.sort(names);
        System.out.println(Arrays.toString(names));

        //... 2. Sort doubles or other primitives.
        double[] lengths = {120.0, 0.5, 0.0, 999.0, 77.3};
        Arrays.sort(lengths);
        System.out.println(Arrays.toString(lengths));
    }
}
输出:

[Alison, David, Zoe]
[0.0, 0.5, 77.3, 120.0, 999.0]
恭维


要获得更详细的外观,

这取决于您的性能需求。 为了便于使用,您可以使用
SortedSet
实现,例如,并为您的Point类(或现有的Point类,例如)编写一个根据元素x值排序的。这将允许您在
O(log(n))
中插入和检索元素


注意,如果你做了很多插入,你不应该使用<代码>数组< />代码,因为在<代码>数组中间的n个插入有一个<代码> n ^ 2 < /代码>代价。但是,如果遍历数据的次数远多于更新数据的次数,那么

数组就有意义了。

这取决于您的性能需要。 为了便于使用,您可以使用
SortedSet
实现,例如,并为您的Point类(或现有的Point类,例如)编写一个根据元素x值排序的。这将允许您在
O(log(n))
中插入和检索元素


注意,如果你做了很多插入,你不应该使用<代码>数组< />代码,因为在<代码>数组中间的n个插入有一个<代码> n ^ 2 < /代码>代价。如果你遍历数据的次数比更新数据的次数多得多,那么数组就有意义了。

是的,我知道关于数据结构的书,但我是Java的noob,thx对于可比较的接口,我会在我的Point类中实现这个接口,然后我可以按点的x值排序对不起,如果我不礼貌,我不是故意的。祝你好运是的,我知道关于数据结构的书,但我是Java的noob,thx的可比接口,我将在我的Point类中实现这个接口,然后我可以按点的x值排序抱歉,如果我说得粗鲁,我不是故意的。祝你好运是的,提到了比较器,解释了结构,回答很好,thx-man是的,提到了比较器,解释了结构,回答很好,thx-man