Cuando estaba escribiendo filtrado de raíz hoy, estaba un poco aturdido. Primero pensé en usar el mapa nativo de Java para escapar, pero pensé que era demasiado bajo. Más tarde, lo pensé y podría usar Java 8 Lambda. Después de escribirlo, descubrí que Google Guava tiene un método preparado. Lo enumeré uno por uno como referencia.
En primer lugar, si copia mi código, no olvide citar estas dependencias
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>1.3</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>25.1-jre</version> </dependency></dependencies>
Filtrar por tecla
clase pública FilterMapbyKeyTest {Map privado <Integer, string> week = new HashMap <> (); @Bebore public void setup () {week.put (1, "lunes"); Week.put (2, "martes"); Week.put (3, "Miércoles"); Week.put (4, "Jueves"); Week.put (5, "viernes"); Week.put (6, "Sábado"); Week.put (7, "domingo"); } / *** Versiones antes de Java 8* / @Test public void filtreMapByKey () {map <integer, string> map = new HashMap <> (); for (MAP.Entry <Integer, String> Entry: Week.EntrySet ()) {if (Entry.getKey () <= 3) {map.put (Entry.getKey (), Entry.getValue ()); }} afirmartHat (map.KeySet (), contiene (1, 2, 3)); } / ** * java 8 lambda * / @test public void filtreMapByKeyJava8Lambda () {map <integer, string> map = week.entryset (). Stream (). Filtre (r -> r.getKey () <= 3) .Collect (coleccionadores.tomap (map.entry :: getKey, map.entry :: getValue)); afirmar que (map.KeySet (), contiene (1, 2, 3)); } / ** * Google Guava * / @Test public Void FilterMapByKeyGuAva () {MAP <Integer, String> MAP = Maps.FilterKeys (Week, R -> R <= 3); afirmar que (map.KeySet (), contiene (1, 2, 3)); }}Filtrar por valor
clase pública FilterMapbyValuetest {Map privado <Integer, String> Week = new Hashmap <> (); @Bebore public void setup () {week.put (1, "lunes"); Week.put (2, "martes"); Week.put (3, "Miércoles"); Week.put (4, "Jueves"); Week.put (5, "viernes"); Week.put (6, "Sábado"); Week.put (7, "domingo"); } / *** Versiones antes de Java 8* / @test public void filtreMapByValue () {map <integer, string> map = new Hashmap <> (); for (MAP.Entry <Integer, String> Entry: Week.EntrySet ()) {if (Entry.getValue (). Startswith ("S")) {map.put (Entry.getKey (), Entry.getValue ()); }} afirmar que (map.values (), contiene ("sábado", "domingo")); } / ** * java 8 lambda * / @test public void filtreMapByValueJava8Lambda () {map <integer, string> map = week.Entryset (). Stream (). Filtre (r -> r.getValue (). Startswith ("s")) .collect (coleccionadores.tomap (map.entry :: getkey,, getkey, Map.entry :: getValue)); afirmar que (map.values () contiene ("sábado", "domingo")); } / ** * Google Guava * / @Test public Void FilterMapByValueGuAva () {MAP <Integer, String> MAP = Maps.FilterValues (Week, R -> R.Startswith ("S")); afirmar que (map.values () contiene ("sábado", "domingo")); }}Resumir
El anterior es el código de ejemplo del mapa Java filtrado a través de la clave o el valor introducido por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!