privatestatic <T extends Comparable<T>> void checkToTypedArray(String message, T[] expected, T[] inputArray,
Collection<T> collection, boolean ignoreOrder) {
T[] res = collection.toArray(inputArray); if (expected.length <= inputArray.length && res != inputArray) { thrownew AssertionError(message + ": not the same array returned");
} if (res.getClass() != expected.getClass()) { thrownew AssertionError(message + ": wrong class returned: " + res.getClass());
} if (res.length < expected.length) { thrownew AssertionError(message + ": length is smaller than expected: " + res.length + " < " + expected.length);
} if (ignoreOrder) {
Arrays.sort(res, 0, Math.min(res.length, expected.length));
} if (inputArray.length <= expected.length) { if (!Arrays.equals(res, expected)) { thrownew AssertionError(message + ": not equal: " + Arrays.toString(expected) + " != " +
Arrays.toString(res));
}
} else { int mismatch = Arrays.mismatch(expected, res); if (mismatch != expected.length) { thrownew AssertionError(message + ": mismatch at " + mismatch);
} if (res[expected.length] != null) { thrownew AssertionError(message + ": no null at position " + expected.length);
} // The tail of bigger array after expected.length position must be untouched
mismatch = Arrays
.mismatch(expected, 1, expected.length, res, expected.length + 1, res.length); if (mismatch != -1) { thrownew AssertionError(message + ": mismatch at " + mismatch);
}
}
}
privatestatic <T extends Comparable<T>> void checkToObjectArray(String message, T[] expected,
Collection<T> collection, boolean ignoreOrder) {
Object[] objects = collection.toArray(); if (objects.getClass() != Object[].class) { thrownew AssertionError(message + ": wrong class returned: " + objects.getClass());
} if (ignoreOrder) {
Arrays.sort(objects);
} int mismatch = Arrays.mismatch(expected, objects); if (mismatch != -1) { thrownew AssertionError(message + ": mismatch at " + mismatch);
}
}
privatestaticvoid checkMap(boolean ordered) {
Map<String, String> map = ordered ? new LinkedHashMap<>() : new HashMap<>();
checkToArray("Empty-keys", new String[0], map.keySet(), !ordered);
checkToArray("Empty-values", new String[0], map.values(), !ordered);
List<String> keys = new ArrayList<>();
List<String> values = new ArrayList<>(); for (int i = 0; i < 100; i++) {
keys.add(String.valueOf(i));
values.add(String.valueOf(i * 2));
map.put(String.valueOf(i), String.valueOf(i * 2));
checkToArray(i + "-keys", keys.toArray(new String[0]), map.keySet(), !ordered);
checkToArray(i + "-values", values.toArray(new String[0]), map.values(), !ordered);
}
map.clear();
checkToArray("Empty-keys", new String[0], map.keySet(), !ordered);
checkToArray("Empty-values", new String[0], map.values(), !ordered);
}
privatestaticvoid checkSet(boolean ordered) {
Collection<String> set = ordered ? new LinkedHashSet<>() : new HashSet<>();
checkToArray("Empty", new String[0], set, !ordered);
set.add("foo");
checkToArray("One", new String[]{"foo"}, set, !ordered);
set.add("bar");
checkToArray("Two", new String[]{"foo", "bar"}, set, !ordered);
Collection<Long> longSet = ordered ? new LinkedHashSet<>() : new HashSet<>(); for (int x = 0; x < 100; x++) {
longSet.add((long) x);
}
checkToArray("100", LongStream.range(0, 100).boxed().toArray(Long[]::new), longSet, !ordered);
longSet.clear();
checkToArray("After clear", newLong[0], longSet, !ordered); for (int x = 0; x < 100; x++) {
longSet.add(((long) x) | (((long) x) << 32));
}
checkToArray("Collisions", LongStream.range(0, 100).mapToObj(x -> x | (x << 32))
.toArray(Long[]::new), longSet, !ordered);
}
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.9Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.