Quando eu estava escrevendo filtragem de raiz hoje, fiquei um pouco atordoado. Pensei primeiro em usar o mapa nativo de Java para fazer uma pancada, mas pensei que era muito baixo. Mais tarde, pensei sobre isso e poderia usar o Java 8 Lambda. Depois de escrevê-lo, descobri que o Google Guava tem um método pronto. Eu listei um por um para referência.
Primeiro de tudo, se você copiar meu código, não se esqueça de citar essas dependências
<Dependences> <pendence-> <puperid> junit </frugiD> <stifactId> Junit </storkactid> <versão> 4.12 </version> <cope> test </cope> <clusions> <cclusion> </groupid> org.hamcrest </groupid> <stifactId> hamcrest-core </artefactid <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>
filtre por chave
classe pública filtermapbyKeyTest {private mapa <inteiro, string> semana = new hashmap <> (); @Before public void setup () {week.put (1, "segunda -feira"); Semana.put (2, "terça -feira"); Semana.put (3, "quarta -feira"); Semana.put (4, "Quinta -feira"); Semana.put (5, "sexta -feira"); Semana.put (6, "Sábado"); Semana.put (7, "domingo"); } / *** versões antes do java 8* / @test public void filtermapbyKey () {map <Integer, string> map = new hashmap <> (); para (map.entry <Integer, string> Entrada: semana.entrySet ()) {if (Entry.getKey () <= 3) {map.put (Entry.getKey (), Entry.getValue ()); }} assertThat (map.keyset (), contém (1, 2, 3)); } / ** * java 8 lambda * / @test public void filtermapbyKeyJava8lambda () {map <Inteiro, string> map = week.entrySet (). Stream (). Filtro (r r.getKey () <= 3) .Collect (colecionors.TOMAP (.EnTry: getKey (getKey () <= 3). assertThat (map.KeySet (), contém (1, 2, 3)); } / * * assertThat (map.KeySet (), contém (1, 2, 3)); }}filtrar por valor
classe pública filtermapbyValuEtest {private mapa <inteiro, string> semana = new hashmap <> (); @Before public void setup () {week.put (1, "segunda -feira"); Semana.put (2, "terça -feira"); Semana.put (3, "quarta -feira"); Semana.put (4, "Quinta -feira"); Semana.put (5, "sexta -feira"); Semana.put (6, "Sábado"); Semana.put (7, "domingo"); } / *** versões antes de java 8* / @test public void filtermapbyValue () {map <inteiro, string> map = new hashmap <> (); para (map.entry <Integer, string> Entrada: semana.entrySet ()) {if (entradas.getValue (). startSwith ("s")) {map.put (entrada.getKey (), entrada.getValue ()); }} AssertThat (map.values (), contém ("sábado", "domingo")); } / ** * java 8 lambda * / @test public void filtermapbyValueJava8lambda () {map <Integer, string> map = week.entrySet (). assertThat (map.values (), contém ("sábado", "domingo")); } / ** * google goiaba * / @test public void filtermapbyValueguava () {map <Integer, string> map = maps.filtervalues (semana, r -> r.startswith ("s")); assertThat (map.values (), contém ("sábado", "domingo")); }}Resumir
O exposto acima é o código de exemplo de mapa Java filtrado através da chave ou valor introduzido pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!