| import java.util.Arrays; |
| import org.checkerframework.checker.index.qual.*; |
| |
| public class BinarySearchTest { |
| |
| private final long @SameLen("iNameKeys") [] iTransitions; |
| private final String @SameLen("iTransitions") [] iNameKeys; |
| |
| private BinarySearchTest( |
| long @SameLen("iNameKeys") [] transitions, String @SameLen("iTransitions") [] nameKeys) { |
| iTransitions = transitions; |
| iNameKeys = nameKeys; |
| } |
| |
| public String getNameKey(long instant) { |
| long[] transitions = iTransitions; |
| int i = Arrays.binarySearch(transitions, instant); |
| if (i >= 0) { |
| return iNameKeys[i]; |
| } |
| i = ~i; |
| if (i > 0) { |
| return iNameKeys[i - 1]; |
| } |
| return ""; |
| } |
| |
| public String getNameKey2(long instant) { |
| long[] transitions = iTransitions; |
| int i = Arrays.binarySearch(transitions, instant); |
| if (i >= 0) { |
| return iNameKeys[i]; |
| } |
| i = ~i; |
| if (i < iNameKeys.length) { |
| return iNameKeys[i]; |
| } |
| return ""; |
| } |
| } |