用于处理2D点、数组、列表或其他数据的Java数据结构?
我是一名Ruby开发者,多亏了Android平台,我会给Java一个机会 我有一组二维点[p1,p2,p3,p4…p10],我想重新排列这个集合,按点的x值升序排序。在Ruby中,我会这样做:用于处理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资源,
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