我正在使用 if(Collections.frequency(pattern, l) > 15)
檢查列表中是否有重複出現15次的長整數。我還需要做的是一樣的東西 if(Collections.frequency(pattern, >500) > 15)
所以它會檢查數量超過500多少次在列表中也會發生,反正是有這樣做嗎?Java如果列表中的數字超過了x
回答
你可以這樣做:
if(pattern.stream().filter(p-> p > 500).collect(Collectors.toList()).size() > 15)
爲什麼你寫的'.collect(Collectors.toList()),大小()'而不是'。 .Count中()'?這浪費了記憶和週期。 –
@LouisWasserman是對的。我們可以使用.count() –
@LouisWasserman你是對的 – tammy
相信frequency()
函數查找精確匹配的對象,所以你不能。你不能循環收集舊的方式,並比較每個元素,並添加一個計數器?
for (iterable_type iterable_element : collection) {
if (iterable_element > 500) counter++;
}
注意:這不是原始答案。我只是把@tammy和@ LouisWasserman的 答案可以很容易地瞭解誰尚未使用的Java 1.8之前。
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
public class FrequencyTest {
public static void main(String[] args){
List<Integer> intList = new LinkedList<Integer>(){{
add(1);
add(501);
add(599);
add(499);
add(11);
add(11);
add(12);
}};
int count = intList.stream().filter(p-> p > 500).count();
System.out.println(count);
}
}
既然你沒有特別要求一個Java 8的回答,這應該在大多數Java版本,但很容易修改使用lambda表達式。
我覺得你真的希望有「換出」,或有功能的多個版本,可以在不重寫代碼中使用的能力是什麼。這是從計數分離的標準。在這種情況下,您需要傳遞一個接口的實例,該接口實現一個方法來確定是否滿足條件。在下面的情況下,我把它叫做IMyComparator
被傳遞到我自己的靜態frequency
方法。
這樣,在我自己的「收藏」類,我可以有一個frequency
經營像Collections.frequency
。
public class MyCollection {
private interface IMyComparator {
public int isCriteriaMet(Integer source, Integer target);
}
private class MyComparator implements IMyComparator
{
public int isCriteriaMet(Integer source, Integer target)
{
if ((source == null) || (target == null)) {
return 0;
}
if (source.intValue() > target.intValue()) {
return 1;
} else {
return 0;
}
}
}
private Collection<Integer> numbers;
private IMyComparator imc;
public static void main(String[] args) {
MyCollection test = new MyCollection();
int result = MyCollection.frequency(test.numbers, 500, test.imc);
System.out.println("Frequency of numbers > 500: " + result);
}
public MyCollection() {
numbers = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 100, 200, 300, 1000, 2000, 3000));
imc = new MyComparator();
}
public static int frequency(Collection<Integer> c, Object target, IMyComparator imc) {
int count = 0;
for (Integer element: c) {
count += imc.isCriteriaMet(element, 500);
}
return count;
}
}
- 1. 如果在mysql中有超過10%的結果超過X
- 2. 如果超過x值在Magento
- 3. ,如果我超過了最大餅乾
- 4. Java列表中的數字
- 5. 選擇其中的結果數超過X
- 6. 表格行超過列數。
- 7. 如果表中包含超過500行
- 8. 瞭解Java中列表的列表
- 9. 如果字段超出列大小,Oracle結果將跳過行
- 10. 超過了最大的可改名錶字符數
- 11. 如果文本大小超過了字段邊界,如何在水晶報表中抑制字符串字段?
- 12. ultragrid:如果超過某個數字,則顯示下一行中的某些列
- 13. 的JavaScript,如果數量超過數
- 14. 如果行數超過$ x,將具有子陣列的陣列拆分爲單獨的陣列
- 15. 如何在PHP中獲取特定的列值超過x行?
- 16. 的Java:從超列表
- 17. 如何只檢索數據,如果列數超過一定量
- 18. 如果列表的值超過某個值,則更改列表的值
- 19. Java跳過序列中的數字
- 20. 將每個變量爲一個字符串,如果它不超過x字符
- 21. 如何顯示文字中出現超過'x'次的單詞?
- 22. 字段列表中的未知列'X'
- 23. Java中x%10的結果
- 24. 如何從列表框中的每個數字中減去x
- 25. 一個錶行是2列寬,超過了第一行(1)確定的列數
- 26. 如果超過一週的x天,則返回
- 27. 如何檢查Java中是否已經過了X秒?
- 28. 用於sin(x)和cos(x)的Maclaurin系列超過最大值
- 29. JAVA:如何中斷,如果它持續超過1秒
- 30. 過濾器下拉列表超出了jqxgrid中的過濾器彈出框
我不認爲你讀了我的問題。 –
你可以編寫自己的函數嗎?或者你是否必須使用Java集合? –
'如果(pattern.stream()過濾器(X - > X> 500).Count之間的()> 15)' –