Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Na ja, ich finde /2 ist für die meisten Leute einfacher verständlich als >> 1 ... ;-) Ob das nun langsamer ist oder nicht hängt erstmal vom Compiler ab (bytecode gejitted-er Maschinenen Code), denn dieser könnte den Code auch entsprechend optimieren.Wieso soll das einfacher sein? Die Division durch 2 ist sicher langsamer als das bitshiften um 1.
/**
* Utility class for implementations of {@code List}.
*
* @author Oliver Gierke - gierke@synyx.de
*/
public class ListUtils {
/**
* Returns the a list with elements from the source list and selects the
* elements on position of a binary decomposition of the given integer
* number. E.g. a value of 15 will return the 1st, 2nd, 4th and 8th element
* of the source list.
*
* @param <T>
* @param source
* @param number
* @return
*/
public static <T> List<T> getBinaryElements(List<T> source, int number) {
if (source.size() <= Integer.highestOneBit(number)) {
throw new IllegalArgumentException(
"Given source list is to small for the given number!");
}
return getBinaryElementsRecursively(source, number, 1);
}
/**
* Recursive implementation of {@code #getBinaryElements(List, int)}.
*
* @param <T>
* @param source
* @param number
* @param base
* @return
*/
private static <T> List<T> getBinaryElementsRecursively(List<T> source,
int number, int base) {
List<T> result = new ArrayList<T>();
if (number % 2 == 1) {
result.add(source.get(base));
}
if (2 > number) {
return result;
}
result.addAll(getBinaryElementsRecursively(source, number / 2,
base << 1));
return result;
}
}