4 回答

TA貢獻1829條經驗 獲得超4個贊
您不需要對其進行排序,只需將元素收集在一個列表中并在內容上調用 toString。如果順序很重要,您可以在之后對收集的值列表進行排序。
static String greaterThan(int[] vector, int compare) {
List<Integer> greater = new ArrayList<>();
for (int i : vector) {
if (i > compare) {
greater.add(i);
}
}
return greater.toString();
}

TA貢獻1848條經驗 獲得超6個贊
這是盡可能簡單的。這適用于數組。
public static int[] greaterThan(int[] numbs, int max) { return Arrays.stream(numbs).parallel().filter(a -> a > max).toArray(); }
您也可以對列表執行相同的操作。
public static List<Integer> greaterThan(List<Integer> numbs, int max) { return numbs.parallelstream().filter(a -> a > max).collect(Collectors.toList()); }
在這兩種情況下,列表或數組都變成了并行的值流。那些被過濾以僅允許那些大于最大的通過管道。然后將它們收集到列表或數組中并返回。此特定任務適用于多線程中的并行操作,并將加快執行速度,尤其是當您的 PC 具有多個內核時。
即使您是 Java 新手,lambda 和流也是該語言的重要特性,應該學習。

TA貢獻1818條經驗 獲得超11個贊
在上述方法中對您的輸入進行排序實際上會使它變慢。通過正常的數組迭代和比較,您的復雜度將為 O(n),而對于排序則為 O(nlogn)。相反,你可以試試這個。
static String greaterThan(int[] vectorCompare, int valueCompare)
{
List<Integer> list = new ArrayList<>();
for (int value : vectorCompare)
{
if (valueCompare < value)
{
list.add(value);
}
}
return list.toString();
}
通過使用 Arraylist,您無需擔心要返回的元素數量。

TA貢獻1797條經驗 獲得超4個贊
可以按如下方式完成:
List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(4);
list.add(6);
list.add(7);
int valToCompare = 4;
List<Integer> result = find(list, valToCompare);
private static List<Integer> find(List<Integer> list, int val) {
return list.stream().filter(v -> v > val).collect(Collectors.toList());
}
添加回答
舉報