gpt4 book ai didi

java - Comparable<类型>数组 VS Comparable数组

转载 作者:行者123 更新时间:2023-11-29 05:37:29 25 4
gpt4 key购买 nike

我有一个 Point实现 Comparable 的类.我想做Point f = arr[first];

现在,我已经读到使用原始类型 Comparable等等不好。所以,如果我做 arr[]类型 Comparable<Point>[]而不是 Comparable[]我会做错什么?

这是被盗的代码,我喜欢它,我偷了它。

private static void sort(Comparable[] a, Point compPoint, int lo, int hi) {
if (hi <= lo)
return;
int lt = lo;
int gt = hi;
int i = lo;
int count = 0;
Comparator comp = compPoint.SLOPE_ORDER;
Comparable v = a[lo];
ArrayList<Point> line = new ArrayList<Point>();
line.add(compPoint);
while (i <= gt) {
int cmp = comp.compare(a[i], v);
if (cmp < 0)
exch(a, lt++, i++);
else if (cmp > 0)
exch(a, i, gt--);
else {
count++;
line.add((Point) a[i]);
i++;
}
}
if (count >= 3) {
Collections.sort(line, new Comparator<Point>() {
public int compare(Point v, Point w) {
return v.compareTo(w);
}
});
for (int j = 0; j < line.size(); j++) {
if (j == line.size() - 1)
StdOut.println(line.get(j).toString());
else
StdOut.print(line.get(j).toString()
+ " -> ");
}

line.get(0).drawTo(line.get(line.size() - 1));
}

sort(a, compPoint, lo, lt - 1);
sort(a, compPoint, gt + 1, hi);
}



private static void exch(Comparable[] a, int v, int w) {
Comparable tmp = a[v];
a[v] = a[w];
a[w] = tmp;
}

我想知道是否有比原始类型 Comparable 更好的方法。

最佳答案

现在,你可以这样调用它:

String[] array = {"a", "b"};
sort(array, point, 1, 2);

显然这是荒谬的。将字符串与点进行比较毫无意义。

似乎该方法中的代码适用于任何可比较的类型。考虑将签名更改为:

private static <T extends Comparable<T>> void sort(T[] a, T comp, int lo, int hi) {

关于java - Comparable<类型>数组 VS Comparable数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18948934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com