簡體   English   中英

創建整數域的最快方法是什么?

[英]What is the fastest way to create integer domain?

我試圖建立具有整數范圍的域,但不包括該范圍內的一個點。 例如,我應該建立一個一直到零的范圍,直到4。 但是,我必須在其中排除3。因此,我的域應類似於數組[0,1,2,4]。 創建整數域的最快方法是什么?

在您的域中創建一個整數數組列表,其中不包含一個特定元素。 像這樣:

ArrayList<Integer> domain = new ArrayList<Integer>();    
createDomain(domain, 1, 4, 3);

...
void createDomain(domain, int start, int end, int leaveOutElement) {
    int i;
    for (i = start; i <= end; i++) {
        if (i == leaveOutElement)
            continue;
        domain.add(i);
    }
}

使用Java 8:

final int start = ...;
final int endInclusive = ...;
final int exclude = ...;
int[] domain = IntStream.rangeClosed(start, endInclusive).
        filter(i -> i != exclude).
        toArray();

即創建一個IntStream [start, endInclusive]然后濾除要排除的值,最后將其收集到數組中。

作為一種方法:

public int[] createDomain(final int start, final int endInclusive, final int exclude) {
    return IntStream.rangeClosed(start, endInclusive).
            filter(i -> i != exclude).
            toArray();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM