Pourquoi les programmeurs Java en utilisant la programmation Google recommandent Goyave

annuaire

avant-propos

Joiner / Splitter / CharMatcher

Soutenir les types de

Complément efficace au JDK

Immuable vs unmodifiable

Can-many: Multimap

dans les deux sens Can: BiMap

Can multiple KEY: Table

Programmation fonctionnelle: funcitons

Assertion: prédicats

contrôle nul et autres: en option, avals

cachette

Laissez rappel asynchrone plus facile


Source | Zhang Fengzhe

Lien |  https://www.jianshu.com/p/97778b21bd00

avant-propos

Actuellement Google Goyave est largement utilisé dans les applications pratiques, ce blog reconnaîtra les blogueurs ainsi que l'expérience de goyave utilisés dans le projet à partager avec tout le monde! Apprenez à utiliser Google Goyave peut vous rendre heureux programmation, écrire élégant code Java, dans les conditions autorisées par l'entreprise, je recommande d'utiliser une programmation goyave!

Joiner / Splitter / CharMatcher

JDK fourni chaîne ne suffit pas, d'accord?

Peut-être pas facile, au moins laissez-nous les utiliser non Goushuang, vous avez à vous soucier!

Pour les châtaignes, comme la méthode du partage de l'offre String, nous devons prendre soin de la chaîne vide, il y a des éléments de celui-ci devront envisager de revenir résultat nul, seul l'avant et garniture arrière fournit une méthode de (si je veux couper des éléments au milieu de celui-ci).

Eh bien, regardez l'exemple de code suivant, la goyave vous laissez n'avez pas à vous soucier de ces:

Joiner est le connecteur, un diviseur Splitter, généralement nous les définir comme static final, en utilisant l'application sur l'objet pour générer une chaîne est traitée, elle peut être multiplexé. Pour en savoir apache StringUtils fournis sont des communes méthode statique. Plus important encore, la goyave fournit Joiner / Splitter est un bien testé, sa stabilité et l'efficacité beaucoup plus élevé que apache, vous pouvez vous tester à ce sujet.

Chaîne n'a pas trouvé que nous voulons faire ce qui est de générer votre propre personnalisé Joiner / Splitter, comment simple, simple, API lisse!

Pour Joiner, méthode couramment utilisée consiste à ignorer l'élément NULL: skipNulls () / élément NULL pour des alternatives d'utilisation: useForNull (String)

Pour Splitter, les méthodes couramment utilisées sont les suivantes: trimResults () / omitEmptyStrings (). Remarque Le mode split, une chaîne de caractères, ainsi que régulièrement, il y a une longueur fixe divisée (si doux!)

En fait, en plus de Joiner / Splitter, chaîne goyave matcher fournit en outre: CharMatcher

CharMatcher, processus correspondant de caractère et de découplage, et offre une multitude de façons pour vous d'utiliser!


Soutenir les types de

goyave de JDK natif fourni par le type d'opération a été étendue, ce qui rend plus puissant

goyave fournit Bytes / Shorts / Ints / Iongs / Flotteurs / Doubles / Chars / booléens ces types de données de base de support étendu, que vous pensez, non, ce n'est pas!


Complément efficace au JDK

zone grise: Multiset

collection fournit une liste JDK ordonnée et reproductible, Set désordre, et non reproductible. Que ce fait, pour une collection liée aux deux concepts, un ordre, un dups. Donc Liste vs Set, puis quelques-uns?

Multiset

Qu'est-ce Multiset, je pense que le tableau ci-dessus, vous devez comprendre le concept. Multiset est désordonné, mais vous pouvez dupliquer les collections, il est libre dans la « zone grise » entre List / Set! (Comme l'a ordonné, faire, à l'avenir permettent pas de collections en double Eh bien, la goyave n'a pas encore fourni, bien sûr devrait fournir UniqueList, je suppose, haha)

Multiset à regarder un exemple:

Multiset est livré avec une fonction utile est la possibilité de suivre le nombre de chaque objet.

Immuable vs unmodifiable

Nous regardons l'exemple d'un non modifiable:

Vous voyez défaut non modifiable JDK fournit encore?

En fait, la collecte et la collecte la source Collections.unmodifiableXxx retournée par le même objet, mais l'API peut apporter des modifications à la collection ont été override, jetteront UnsupportedOperationException.

Que nous changeons la collection source, résultant en une vue immuable (non modifiable View) va changer, oh mon dieu!

Bien sûr, sans l'utilisation de la goyave, et la façon dont nous voulons éviter les problèmes ci-dessus?

Au-dessus révèle un concept: Copie défensive, protection contre la copie.

OK, il semble bon unmodifiable, mais goyave sentent encore que nous pouvons améliorer, puis mettre en avant le concept de Immuable, regard:

Sur un copyOf, vous ne serez pas oublier, si pas cher

Avec déclaration officielle de Google est: nous utilisons une seule classe, dire exactement ce que nous voulons dire, c'était super (pas seulement un concept, Immuable en phase COPY prend également en compte les threads simultanés, etc., très intelligent!)

Goyave propose de nombreuses collections, telles que Immuable ImmutableList / ImmutableSet / ImmutableSortedSet / ImmutableMap / ......

ImmutableMap un oeil à un exemple:

Can-many: Multimap

JDK fourni nous Map est une clé et une valeur, un à un, puis le développement réel, il est clair qu'il ya plus d'un cas VALEUR KEY (comme un livre sous la classification), nous avons tendance à exprimer: Carte <k , Liste <v >>, semble un peu gonflé! Gonflé pas de problème, les choses encore plus malheureux, nous devons déterminer s'il est la clé de décider si une nouvelle liste un peu de mal! Des choses plus gênants encore à venir, comme traversal, telles que la suppression, si dur ......

Goyave voir comment résoudre ce grand problème pour vous:

Sous Conseils, une collection de goyave a toute la méthode de création, de sorte que l'avantage est simple, et nous n'avons pas répéter les informations génériques.

get () / touches () / keySet () / valeurs () / entrées () / AsMAP () retourne les méthodes de collecte de vue sont très utiles.

Multimap classe de mise en œuvre a: ArrayListMultimap / HashMultimap / LinkedHashMultimap / TreeMultimap / ImmutableMultimap / ......

dans les deux sens Can: BiMap

MAP fourni afin JDK que nous pouvons trouver la valeur par clé, vous pouvez trouver la clé en valeur par elle, peut-clé et la valeur est trop unique. Ceci est un concept à double sens avant + arrière.

Il y a une telle demande pour elle dans la scène réelle? Par exemple, pour trouver le courrier par ID utilisateur, vous devez également récupérer votre nom d'utilisateur par courrier. Pas de goyave, nous devons créer la carte en avant et en arrière plan créer, et maintenant laissez goyave faire pour vous.

biMap / biMap.inverse () / biMap.inverse (). inverse () Que font-ils avec elle?

Vous pouvez regarder une petite source de BiMap et, en effet, lors de la création de BiMap maintient en interne une carte 2, une carte en avant, en arrière plan, et mettre en place une relation entre eux.

En 此, biMap.inverse () = biMap;!. BiMap.inverse () inverse () == biMap

Can multiple KEY: Table

Nous savons que, en plus de la base de données de clé primaire fournit également un indice composite, mais dans la pratique, une telle relation à plusieurs niveaux est de trouver plus de nous pouvons bien sûr utiliser pour atteindre Carte emboîtés: Carte <k1, Carte <2 m end, v2 >>. Pour rendre notre look code moins laid, goyave fournit une table pour nous.

Le tableau comporte trois concepts: RowKey, columnKey, la valeur et offre une variété de points de vue et des méthodes de fonctionnement vous permettent de gérer plus facilement plusieurs scènes KEY.

Programmation fonctionnelle: funcitons

Les codes ci-dessus sont utilisés pour compléter l'ensemble des éléments de la liste, pris 5 à la longueur, puis transféré en majuscules.

Avantages programmation fonctionnelle La fonction est de fournir des opérations personnalisées dans le traversal de l'ensemble, comme la transformation de conversion. On n'a plus besoin de marcher à travers la collection, encore et encore, simplifie considérablement le code!

Pour transformer un ensemble d'opérations peut être accompli par fonction

Assertion: prédicats

La caractéristique la plus prédicats commune est l'utilisation du filtre dans la collection!

Il convient de noter les listes ne fournit pas la méthode du filtre, mais vous pouvez utiliser complète Collections2.filter!

contrôle nul et autres: en option, avals

Dans la goyave, les moyens de traitement nul pour l'échec rapide, vous pouvez regarder le code source de goyave, la première ligne est de plusieurs façons: Preconditions.checkNotNull (éléments);

Pour en savoir nulle est un concept vague, c'est un succès, ou l'échec, ou est-ce autre chose le sens de celui-ci?

cachette

Pour la plupart des projets Internet, l'importance du cache, il va sans dire!

Si notre application et ne veulent pas utiliser certains composants de mise en cache des tiers (tels que Redis), nous voulons juste avoir un assez puissant mis en cache localement, il est dommage que SET fourni JDK / MAP ne suffit pas!

Tout d'abord, il est un cache local, cache goyave fournit un moyen simple, efficace et facile à entretenir. Pourquoi dites-vous? Parce que pas un seul fil utilisé pour rafraîchir ou le cache de nettoyage, le cache de l'opération, tous les accès de lecture / écriture et de faire passer ce qui est opération de rafraîchissement du cache complet en lecture et en écriture!

En second lieu, nous avons vu, nous sommes très populaire pour dire cache, cache ce que notre stratégie est si facile! Dans un tel simple, derrière, la goyave est de nous aider à faire beaucoup de choses, comme thread-safe.

Laissez rappel asynchrone plus facile

Future offre JDK / FutureTask / appelable pour soutenir le rappel asynchrone, mais il semble encore assez complexe, il ne peut pas être plus simple? Par exemple, enregistrer un rappel de l'écouteur.

Nous pouvons passer de la piscine fil goyave sur la décoration JDK, laissez rappel asynchrone fonction d'écouteur, puis définissez la boîte d'écoute!


Ici, cet article ne décrit que la pointe de l'iceberg goyave, en fait, il y a beaucoup de contenu: par exemple de réflexion, les annotations, les réseaux, en même temps, IO, etc., eh bien, je l'espère, cet article vous permet de rapidement avancée, bonne programmation!

Publié 75 articles originaux · louange gagné 48 · Vues 350 000 +

Je suppose que tu aimes

Origine blog.csdn.net/KingJin_CSDN_/article/details/100580467
conseillé
Classement