La position actuelle:Accueil du site>Scala Programming (Junior)
Scala Programming (Junior)
2022-07-23 21:09:15【Daning!】
Scala
scalaInstallation
#Exécution de la compilationscalaProcédure,Besoin:
JDK(jvm)
ScalaCompilateur(scala SDK)
InstallationJDK (javaInterpréteur)
#InstallationJDK 1.8 64Bits, Et configurer les variables d'environnement.
InstallationScala SDK (scalaInterpréteur)
#InstallationScala SDK
windows : scala-2.12.1.msi
Linux : scala-2.11.12.tar.gz
Après l'installation,Vérifier si l'installation est réussie: scala -version
InstallationIDEAPlug - in
#Télécharger d'abordidealU
#Puis téléchargerIdealuSoutienScalaPlug - in pour
Les étapes spécifiques prennent un peu de temps
Concept
scalaIntroduction
//scala En coursJvmÇa va avecJavaC'est pareil. ScalaEst un langage de programmation Multi - paradigme.
//scalaPrise en charge de la programmation orientée objet et fonctionnelle.
//scalaC'était une petite langue discrète quand elle est sortie.Mais avecSpark,KafkaIsobaseScalaLa montée du cadre Big Data,ScalaÇa brûle..
//scalaL'avantage est qu'il est expressif.
Pourquoi utiliserScala?
//Développer des applications Big Data(Spark, Flink)
//Forte capacité d'expression,Une ligne vautjavaPlusieurs lignes
//Compatible avecjava,Accès à un vasteJavaBibliothèque de classe.Par exempleMysql, redies, freemrker activemq Attendez.
ScalaEtJavaComparer
//javaLe Code est lourd., ScalaLe Code est plus simple. (Trois lignesScala Ça vaut trente - quatre lignes Java. C'est exagéré.!)
//Opérations par lots,scalaUne lignemap C'est presque suffisant ,Mais...Java Besoin de faciliter la circulation
ScalaCompiler le processus d'exécution
java Comment le programme est compilé .Exécuté?
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-kG0zE3s7-1658546372321)(scala.assets/image-20211027213633410.png)]
scala Comment le programme est compilé ,Exécuté?
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-IHPPUNlx-1658546372323)(scala.assets/image-20211027213836372.png)]
// javaCompilateur etscala Le compilateur n'est pas universel Oh .
// scala Il y a aussi sa propre bibliothèque de classes , scalaPeut également être utiliséjava Bibliothèque de classe Oh .
// scala
Base
Interactive, Exemple de fichier
Interactive
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-grLBWoIS-1658546372323)(scala.assets/image-20210830133231577.png)]
Type de fichier
//HelloWorld.scala Les codes sont les suivants::
object HelloWorld {
/* C'est mon premier Scala Procédure * La procédure suivante produira'Hello World!' */
def main(args: Array[String]) {
println("Hello, world!") // Produits Hello World
}
}
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-2dgHhZh3-1658546372324)(scala.assets/image-20210830133434401.png)]
Syntaxe nécessitant une attention particulière
#1. Sensible à la casse - ScalaEst sensible à la casse, Cela signifie que le logo Hello Et helloInScala Ça aurait un sens différent .
#2. Nom de la classe - La première lettre de tous les noms de classe doit être majuscule . Si plusieurs mots sont nécessaires pour former le nom d'une classe , La première lettre de chaque mot doit être majuscule .
Exemple:class MyFirstScalaClass
#3. Nom de la méthode - La première lettre de tous les noms de méthodes est en minuscules . Si plusieurs mots sont utilisés pour former le nom de la méthode , La première lettre de chaque mot est majuscule .
Exemple:def myMethodName()
#4. Nom du fichier du programme - Le nom du fichier de programme doit correspondre exactement au nom de l'objet ( La nouvelle version n'est plus nécessaire , Mais il est recommandé de conserver cette habitude ).Lors de l'enregistrement d'un fichier, Le nom de l'objet qu'il utilise doit être sauvegardé (N'oublie pasScalaEst sensible à la casse),Et ajouter".scala"Extension de fichier. ( Si les noms de fichiers et d'objets ne correspondent pas ,Le programme ne sera pas en mesure de compiler).
Exemple: Hypothèses"HelloWorld"Est le nom de l'objet. Le fichier doit alors être enregistré sous 'HelloWorld.scala"
#5. def main(args: Array[String]) - ScalaLa procédure commence parmain() La méthode commence à traiter ,C'est tout.Scala Entrée obligatoire du programme .
Scala Variables
// 1.scalaMoyennevarVariables déclarées,valConstante déclarée
val Les variables définies ne peuvent pas être réattribuées ,MaisvarPeut être défini.
// 2.Scala Le type peut être déduit.
val name = "Zhanshan"
Affectation inerte
// Quand certaines variables enregistrent des données plus grandes , Mais il n'est pas nécessaire de charger immédiatement JVMEn mémoire, Une affectation inerte peut être utilisée pour améliorer l'efficacité
Quand cette variable est utilisée , Pour charger dans JVMMoyenne
//Syntaxe:
lazy val/var Nom de la variable = Expression
Par exemple, il y a un complexe SqlLangues, Nous espérons que seuls SQL Il n'est chargé que lorsque la déclaration est faite. .. Si non utilisélazy, Il est chargé directement dans la mémoire. .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-EEWagGoH-1658546372324)(scala.assets/image-20211028100331149.png)]
Type de données
//scala Avec javaMême type de données. Voici ce qui est différent :
scala Tous les types commencent par des majuscules .
Utilisation plastique Int,Au lieu deInteger
scala Le type peut être omis lors de la demande de variables ,Jeanscala Le compilateur lui - même extrapole. .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-tpEVg3jR-1658546372325)(scala.assets/image-20210830135413572.png)]
ScalaHiérarchie des types
//ScalaLe type de données pour“Héritage unique”Système, C'est l'héritage.AnyCe type
//AnyVal C'est tout.“Type de valeur”Parent de.
//AnyRef C'est tout.“Type de référence”Parent de
//Unit Représentation“Type vide”
Il n'a qu'un seul exemple () .C'est similaire àjavaDansvoid, MaisscalaQuejavaPlus orienté objet.
//Null Tous les“Type de référence”Sous - classe.
C'est - à - direNul Les types peuvent être attribués à tous “Type de référence”
//Nothing Sous - classes de tous types.
Nothing Lorsque la méthode de représentation lance une exception , Sous - classe retournée ..
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-qauj3vwv-1658546372325)(scala.assets/image-20211028104338861.png)]
Null Le type n'est pas attribué à AnyVal Les types suivants , Ne peut être attribué qu'à AnyRefType sous.
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-tJBvySMO-1658546372326)(scala.assets/image-20211028110559816.png)]
Opérateur
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-aCzNU0pw-1658546372326)(scala.assets/image-20211028103114605.png)]
Expression conditionnelle(if)
//if Utilisation de,Grammaire etjavaC'est pareil. Ce n'est pas beaucoup ici bb. Ce qui suit se concentre sur javaC'est différent.:
ScalaMoyenneifA une valeur de retour.
Scala Il n'y a pas d'expression ternaire dans ,Peut être utiliséifExpression au lieu de Expressions TERNAIRES
Avec une valeur de retourif
Exemple:Quandsex - Oui. “male”Je reviens1 , Sinon, retournez à0
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-2gq23e7w-1658546372327)(scala.assets/image-20211028113904773.png)]
Expression de bloc
//scalaUtilisé dans{} Représente une expression de bloc
Etif La même expression ,Les expressions de bloc ont également une valeur. La valeur est la valeur de la dernière expression .
// L'expression de bloc est une chose très forte . Ça marche bien , Le Code est délicat .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-O0yxjpK9-1658546372327)(scala.assets/image-20211028115157383.png)]
Cycle
for
Traverser la boucle1À9
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-PStir5sz-1658546372328)(scala.assets/image-20211028150220215.png)]
InscalaMoyenne,Les chiffres sont aussi un objet,Peut également être appelé .toMéthodes.
//scalaMoyenne x.to(y) équivalent à python Moyenne range(x, y+1)
// 1.to(10) Peut aussi être écrit comme 1 to 10
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-3CUMIEne-1658546372328)(scala.assets/image-20211028150629317.png)]
forBoucle imbriquée
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-8AR7aK0Q-1658546372329)(scala.assets/image-20211028152304039.png)]
forGarde
forDans l'expression,Peut être ajoutéifDéclaration de jugement,C'estif Le jugement appelle ça la garde . Nous pouvons utiliser les gardes pour for Les expressions sont plus concises .
Syntaxe:
for(i <- Expression/Tableau/Ensemble if Expression) {
// Expression
}
//Représentation,Quandif L'expression suivante TrueQuand, Pour accéder aux opérations suivantes .
Exemple:Avecfor Imprimer l'expression 1-10 Entre Peut effacer3Nombre de
for(i <- 1.to(10) if(i%3==0)){
println(i)
}
Équivalent à:
for(i <- 1.to(10)){
if(i%3==0){
println(i)
}
}
for Dérivé de
// Peut être utiliséforDérivation Générer une collection de cœurs (Un ensemble de données)
// On met UtiliseryieldDefor L'expression s'appelle “Dérivation”
Exemple:Générer10, 20, 30, … 100
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-YDlFwySD-1658546372329)(scala.assets/image-20211028154508520.png)]
Suivez - moi.pythonDe v = [ i*10 for i in range(11)] C'est un peu comme .
while
Non..
do … while
Non..
break
* InscalaMoyenne,SimilaireJavaEtC++Debreak/continueMot - clé supprimé
* Si vous devez utiliserbreak/continue,Il faut l'utiliser.scala.util.controlEnveloppéBreakClassebreableEtbreakMéthodes.
* ImporterBreaksSac import scala.util.control.Breaks._
* UtiliserbreakableOui.for L'expression est enveloppée
* for Où l'expression doit sortir de la boucle ,Ajouter`break()`Appel de méthode
Exemple:
// Importerscala.util.controlEnveloppéBreak
import scala.util.control.Breaks._
breakable{
for(i <- 1 to 100) {
if(i >= 50) break()
else println(i)
}
}
continue
//continueRéalisation etbreakSimilaire,Mais c'est un peu différent:
RéalisationbreakC'est avecbreakable{
}Toutfor L'expression est enveloppée ,
Et la réalisationcontinueC'est avecbreakable{
}Oui.for Le corps circulaire de l'expression peut être inclus
Exemple:Imprimer1-100Nombre de,Utiliserfor Expression pour traverser , Si le nombre peut être divisé 10,Ne pas imprimer
// Importerscala.util.controlEnveloppéBreak
import scala.util.control.Breaks._
for(i <- 1 to 100 ) {
breakable{
if(i % 10 == 0) break()
else println(i)
}
}
Méthodes,Fonctions
Scala Il y a des méthodes et des fonctions,La différence sémantique entre les deux est très faible.Scala La méthode fait partie de la classe, Et une fonction est un objet qui peut être assigné à une variable .En d'autres termes, une fonction définie dans une classe est une méthode.
Scala L'approche de Java Similaire à,La syntaxe est différente, La méthode fait partie de la classe de composition .
Scala La fonction est un objet complet,Scala La fonction dans est en fait héritée Trait Objet de la classe pour.
Scala Utilisé dans val L'instruction peut définir une fonction,def Méthode de définition de l'énoncé.
Attention!:Certaines fonctions de traduction(function)Et méthodes(method)Ça ne fait aucune différence..
Méthodes
Syntaxe
def methodName (Nom du paramètre:Type de paramètre, Nom du paramètre:Type de paramètre) : [return type] = {
// Corps de la méthode:Une série de codes
}
/* * Le type de paramètre de la liste de paramètres ne peut pas être omis * Le type de valeur de retour peut être omis ,Parscala Le compilateur déduit automatiquement * La valeur de retour peut ne pas être écritereturn,Par défaut{} Valeur de l'expression de bloc */
Exemple:Définir une méthode, Réaliser l'addition de deux valeurs de forme , Renvoie le résultat après addition
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-6MqCqlpd-1658546399390)(scala.assets/image-20211028161335519.png)]
Rédaction standard:
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-bB9fBOOr-1658546399391)(scala.assets/image-20211028162119791.png)]
Inférence de la valeur de retour
//scala La méthode de définition peut omettre la valeur de retour ,Parscala Déduire automatiquement le type de valeur de retour . Cette méthode est plus concise lorsqu'elle est définie .
//Définir une méthode récursive, Impossible d'omettre le type de valeur de retour
//return N'écrivez jamais. ,Ça dépend de ton humeur.
Exemple:Définir une méthode récursive(Factoriel)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-R2mn2JxF-1658546399392)(scala.assets/image-20211028162618915.png)]
Paramètres de la méthode
scala Paramètres de la méthode dans ,Utilisation flexible. Il supporte les types de paramètres suivants :
- Paramètres par défaut (EtpyC'est pareil)
- Paramètre avec nom (EtpyC'est pareil)
- Paramètre de longueur variable ( * )
1.Paramètres par défaut: Vous pouvez définir une valeur par défaut pour un paramètre lors de la définition d'une méthode .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-AXUIZ0qW-1658546399392)(scala.assets/image-20211028163213593.png)]
2.Paramètre avec nom:En appelant la méthode, Vous pouvez spécifier le nom du paramètre à appeler .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-CecpdFQc-1658546399393)(scala.assets/image-20211028163303876.png)]
3. Paramètre de longueur latérale : Si les paramètres de la méthode ne sont pas fixés , Les paramètres qui définissent une méthode sont des paramètres de longueur variable .
Format syntaxique:
def Nom de la méthode(Nom du paramètre:Type de paramètre*):Type de valeur de retour = {
Corps de la méthode
}
// Ajouter un après le type de paramètre `*`No., Indique que le paramètre peut être 0Un ou plusieurs
**Exemple:** Définir une méthode de calcul de la somme de plusieurs valeurs
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-5rmKjRe2-1658546399394)(scala.assets/image-20211028164018151.png)]
Produits:
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-j12uuZkv-1658546399394)(scala.assets/image-20211028164038011.png)]
Questions: Type de paramètre de longueur indéterminée quoi ? La conjecture est un tableau .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-2SNdvULt-1658546399395)(scala.assets/image-20211028164145483.png)]
Produits:
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-YWdxewcX-1658546399395)(scala.assets/image-20211028164204031.png)]
Répondre aux questions:- Oui.WrappendArray() ? ToujoursSeq[Int] ?
Méthode d'appel
//InscalaMoyenne, Il y a plusieurs façons d'appeler la méthode ,
Utilisation du suffixe tune
Utilisation de l'intermixe
Utilisation des crochets bouclés
Utilisation du ton sans parenthèses
// Par la suite spark、flinkHeure de la procédure, Nous utiliserons ces méthodes pour appeler .
1. Utilisation du suffixe tune
Syntaxe: Nom de l'objet.Nom de la méthode(Paramètres)
Exemple:
Math.abs(-1)
1.to(10)
2. Utilisation de l'intermixe
Syntaxe: Nom de l'objet Nom de la méthode Paramètres ; S'il y a plus d'un paramètre, Entre parenthèses
Exemple:
Math abs -1
1 to 10
3. Utilisation des crochets bouclés
//La méthode n'a qu'un seul paramètre, Pour utiliser des accolades bouclées
Math.abs{
-10}
//{} Représente une expression de bloc , La valeur de retour d'une expression rapide est la dernière expression (Je l'ai déjà dit.,N'oublie pas.)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-x5lavozL-1658546399396)(scala.assets/image-20211029113909816.png)]
4. Utilisation de tonalités non signées
//Si la méthode n'a pas de paramètres, Vous pouvez omettre les parenthèses après le nom de la méthode
def m3()=println("hello")
m3
5. L'opérateur est aussi une méthode
InscalaMoyenne:
Tous les opérateurs sont des méthodes
L'opérateur est une méthode dont le nom est un symbole .
1 + 1 Cette expression est en fait aussi un appel de méthode Oh .scalaLa particularité de,Hee - hee..
// Je ne sais pas , J'ai peur d'écrire .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-70lgbz2i-1658546399396)(scala.assets/image-20211029113709782.png)]
Fonctions
// scala Les fonctions de support sont programmées , Celui - ci est programmé Spark/flink Il sera largement utilisé dans les programmes , C'est si important .
/* La fonction est Objet(Variables) Similaire à la méthode, La fonction a également des paramètres d'entrée et des valeurs de retour La définition de la fonction n'est pas nécessairedef Définition Il n'est pas nécessaire de spécifier le type de valeur de retour */
Syntaxe
val Nom de la variable de fonction = (Nom du paramètre:Type de paramètre, Nom du paramètre:Type de paramètre....) => Corps fonctionnel
Conjecture:
Équivalent àpythonMoyenne La vie de la fonction =lambda Paramètres1,Paramètres2 ... :Corps fonctionnel (Par exemple::x = lambda x: x+1)
Exemple: Une fonction qui définit l'addition de deux valeurs numériques
scala> val add = (x:Int, y:Int) => x + y
add: (Int, Int) => Int = <function2>
scala> add(1,2)
res3: Int = 3
La différence entre la méthode et la fonction
/* La méthode appartient à une classe ou à un objet,Au moment de l'exécution,Il est chargé dansJVMDans la zone de méthode de Vous pouvez assigner un objet de fonction à une variable,Au moment de l'exécution,Il est chargé dansJVMDans la mémoire tas de La fonction est un objet,DeFunctionN,L'objet de fonction aapply,curried,toString,tupledCes méthodes.La méthode n'a pas */
**Exemple:**La méthode ne peut pas être assignée à une variable,La fonction peut
Oui.:
val Variables = Nom de la fonction ; C'est vrai
En ce moment Cette variable est une fonction .
val Variables = Nom de la méthode ; C'est mal
scala> val add1 = (x:Int, y:Int) => x+y
add1: (Int, Int) => Int = $$Lambda$1092/256869439@7b5833ee
scala> add1
res14: (Int, Int) => Int = $$Lambda$1092/256869439@7b5833ee
scala> add1(1,1)
res15: Int = 2
scala> val a1 = add1
a1: (Int, Int) => Int = $$Lambda$1092/256869439@7b5833ee
scala> a1(2,2)
res16: Int = 4
// --------------------------------------------------------------------
scala> def add2(x:Int, y:Int) = x+y
add2: (x: Int, y: Int)Int
scala> add2(1,1)
res18: Int = 2
scala> val a2 = add2
<console>:12: error: missing argument list for method add2
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `add2 _` or `add2(_,_)` instead of `add2`.
val a2 = add2
^
La méthode est convertie en fonction
// Parfois, vous devez convertir la méthode en fonction , Passer comme variable , Vous devez convertir la méthode en fonction
Syntaxe:
val Variables = Nom de la méthode _
**Exemple:** Convertir la méthode en fonction ,Assigner une valeur à une variable
scala> def add(x:Int,y:Int)=x+y
add: (x: Int, y: Int)Int
scala> val a = add _
a: (Int, Int) => Int = <function2>
String(String)
// Définir le mode chaîne
val S:String = "aaa" //Utiliser des guillemets doubles
val S:String = """aaaa""" //Utiliser trois guillemets
val S:String = s"${
name}Bonjour" //Utiliser des expressions interpolées
//ParsAu début; name Est une variable ou une expression
Listé java.lang.String Méthodes courantes
Vous pouvez Scala Utilisé dans:
| Numéro de série | Méthode et description |
|---|---|
| 1 | **char charAt(int index)**Renvoie les caractères à l'emplacement spécifié |
| 2 | **int compareTo(Object o)** Comparer une chaîne à un objet |
| 3 | **int compareTo(String anotherString)**Comparer deux chaînes dans l'ordre du dictionnaire |
| 4 | **int compareToIgnoreCase(String str)**Comparer deux chaînes dans l'ordre du dictionnaire,Sans tenir compte de la casse |
| 5 | **String concat(String str)**Connectez la chaîne spécifiée à la fin de cette chaîne |
| 6 | **boolean contentEquals(StringBuffer sb)**Ajoutez cette chaîne à la StringBuffer Comparaison. |
| 7 | **static String copyValueOf(char[] data)**Renvoie le tableau spécifié qui représente la séquence de caractères String |
| 8 | **static String copyValueOf(char[] data, int offset, int count)**Renvoie le tableau spécifié qui représente la séquence de caractères String |
| 9 | **boolean endsWith(String suffix)**Testez si cette chaîne se termine par le suffixe spécifié |
| 10 | **boolean equals(Object anObject)**Comparez cette chaîne à l'objet spécifié |
| 11 | **boolean equalsIgnoreCase(String anotherString)**Mets ça. String Avec l'autre String Comparaison,Sans tenir compte de la casse |
| 12 | **byte getBytes()**Utilisez le jeu de caractères par défaut de la plateforme pour String Code as byte Séquence,Et stocke les résultats dans un nouveau byte Dans le tableau |
| 13 | byte[] getBytes(String charsetNameUtilisez le jeu de caractères spécifié pour String Code as byte Séquence,Et stocke les résultats dans un nouveau byte Dans le tableau |
| 14 | **void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)**Copier les caractères de cette chaîne dans le tableau de caractères de destination |
| 15 | **int hashCode()**Renvoie le Code de hachage de cette chaîne |
| 16 | **int indexOf(int ch)**Renvoie l'index où le caractère spécifié apparaît pour la première fois dans cette chaîne |
| 17 | **int indexOf(int ch, int fromIndex)**Renvoie l'index où le caractère spécifié apparaît pour la première fois dans cette chaîne,Recherche à partir de l'index spécifié |
| 18 | **int indexOf(String str)**Renvoie l'index où la Sous - chaîne spécifiée apparaît pour la première fois dans cette chaîne |
| 19 | **int indexOf(String str, int fromIndex)**Renvoie l'index où la Sous - chaîne spécifiée apparaît pour la première fois dans cette chaîne,À partir de l'index spécifié |
| 20 | **String intern()**Renvoie la représentation canonique de l'objet string |
| 21 | **int lastIndexOf(int ch)**Renvoie l'index où le caractère spécifié est apparu pour la dernière fois dans cette chaîne |
| 22 | **int lastIndexOf(int ch, int fromIndex)**Renvoie l'index où le caractère spécifié est apparu pour la dernière fois dans cette chaîne,Recherche inverse à partir de l'index spécifié |
| 23 | **int lastIndexOf(String str)**Renvoie l'index où la Sous - chaîne spécifiée apparaît à l'extrême droite de cette chaîne |
| 24 | **int lastIndexOf(String str, int fromIndex)**Renvoie l'index où la Sous - chaîne spécifiée s'est produite pour la dernière fois dans cette chaîne,Recherche inverse à partir de l'index spécifié |
| 25 | **int length()**Renvoie la longueur de cette chaîne |
| 26 | **boolean matches(String regex)**Indique si cette chaîne correspond à une expression régulière donnée |
| 27 | **boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)**Testez si les deux zones de chaîne sont égales |
| 28 | **boolean regionMatches(int toffset, String other, int ooffset, int len)**Testez si les deux zones de chaîne sont égales |
| 29 | **String replace(char oldChar, char newChar)**Renvoie une nouvelle chaîne,C'est en utilisant newChar Remplacer tout ce qui apparaît dans cette chaîne oldChar Je l'ai. |
| 30 | String replaceAll(String regex, String replacementUtilisez le replacement Remplacer toutes les sous - chaînes de cette chaîne qui correspondent à une expression régulière donnée |
| 31 | **String replaceFirst(String regex, String replacement)**Utilisez le replacement Remplacer cette chaîne pour correspondre à la première sous - chaîne d'une expression régulière donnée |
| 32 | **String[] split(String regex)**Diviser cette chaîne en fonction de la correspondance d'une expression régulière donnée |
| 33 | **String[] split(String regex, int limit)**Diviser la chaîne en fonction de l'expression régulière correspondante |
| 34 | **boolean startsWith(String prefix)**Testez si cette chaîne commence par le préfixe spécifié |
| 35 | **boolean startsWith(String prefix, int toffset)**Testez si la Sous - chaîne qui commence par l'index spécifié commence par le préfixe spécifié. |
| 36 | **CharSequence subSequence(int beginIndex, int endIndex)**Renvoie une nouvelle séquence de caractères,C'est une sous - séquence de cette séquence |
| 37 | **String substring(int beginIndex)**Renvoie une nouvelle chaîne,C'est une sous - chaîne de cette chaîne |
| 38 | **String substring(int beginIndex, int endIndex)**Renvoie une nouvelle chaîne,C'est une sous - chaîne de cette chaîne |
| 39 | **char[] toCharArray()**Convertir cette chaîne en un nouveau tableau de caractères |
| 40 | **String toLowerCase()**Utilisez les règles de l'environnement linguistique par défaut pour faire ceci String Tous les caractères sont convertis en minuscules |
| 41 | **String toLowerCase(Locale locale)**Utilisez le Locale Les règles de String Tous les caractères sont convertis en minuscules |
| 42 | **String toString()**Renvoie l'objet lui - même(C'est déjà une chaîne!) |
| 43 | **String toUpperCase()**Utilisez les règles de l'environnement linguistique par défaut pour faire ceci String Tous les caractères en majuscules |
| 44 | **String toUpperCase(Locale locale)**Utilisez le Locale Les règles de String Tous les caractères en majuscules |
| 45 | **String trim()** Supprimer les espaces de début et de fin de la chaîne spécifiée |
| 46 | **static String valueOf(primitive data type x)** Renvoie la représentation par chaîne du paramètre de type spécifié |
Supplément:
S.head
S.drop(n)
S.dropRight(n) Supprimer aprèsnCaractères
Longueur de la chaîne
str.length()
Le jugement est une sous - chaîne de chaînes
//Jugementstr2Instr1Position in
str1.indexOf(str2)
Retour-1Description N'existe pas
Assemblage de chaînes
val str3 = str1.concat(str2)
Ou
val str3 = str1 + str2
Remplacer
str1.replaceAll("String1","String2") //Oui.str1Moyenne String1Remplacer par une chaîne2
Liste(List)
//La liste estscalaLe plus important、 Et la structure de données la plus couramment utilisée .List Ayant les propriétés suivantes :
- Les valeurs dupliquées peuvent être sauvegardées
- Il y a un ordre.
// Il existe deux types de listes , L'un est une liste immuable 、 L'autre est une liste variable
Liste immuable
// Une liste immuable est un élément d'une liste 、 La longueur est immuable .
// En fait, les éléments , La longueur peut varier . En fait, ça peut changer ,Par exemple:updated(), drop(),
Exactement.“Liste immuable La longueur ne peut pas être augmentée. ”
Définir la syntaxe
//Utiliser`List(Élément1, Élément2, Élément3, ...)` Pour créer une liste immuable :
val/var Nom de la variable = List(Élément1, Élément2, Élément3...)
//Par exemple : var L = List(2,4,9,5,3,6,1,7,8)
//Utiliser`Nil` Créer une liste vide immuable :
val/var Nom de la variable = Nil
//Utiliser`::` Méthode pour créer une liste immuable
val/var Nom de la variable = Élément1 :: Élément2 :: Nil
//Utiliser**::** Splice pour créer une liste , Vous devez ajouter un dernier **Nil**
**Exemple:** Créer une liste immuable , Conserver les éléments suivants (1,2,3,4)
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
**Exemple:**UtiliserNil Créer une liste vide immuable
scala> val a = Nil
a: scala.collection.immutable.Nil.type = List()
**Exemple:**Utiliser:: Méthode créer une liste ,Contient-2、-1Deux éléments
scala> val a = -2 :: -1 :: Nil
a: List[Int] = List(-2, -1)
Modifier
Oui.L(2) Remplacer par100
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-iJSCMo2i-1658546399397)(scala.assets/image-20211027170608831.png)]
Supprimer
Avant suppression5Données L(5)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-8yKEQt1C-1658546399398)(scala.assets/image-20211027170859736.png)]
foreach()
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-ne3EDIS6-1658546399398)(scala.assets/image-20211027171140054.png)]
Liste des variables
// Une liste variable est un élément d'une liste 、 La longueur est variable .
// Pour utiliser une liste variable ,Importer d'abord
import scala.collection.mutable.ListBuffer
// L'ensemble variable est `mutable`Dans le sac
// Les ensembles immuables sont tous `immutable`Dans le sac(Importation par défaut)
Définir la syntaxe
//UtiliserListBuffer[Type d'élément]() Créer une liste vide de variables ,Structure grammaticale:
val/var Nom de la variable = ListBuffer[Int]()
//UtiliserListBuffer(Élément1, Élément2, Élément3...) Créer une liste de variables ,Structure grammaticale:
val/var Nom de la variable = ListBuffer(Élément1,Élément2,Élément3...)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-8ScPkGe9-1658546399399)(scala.assets/image-20211029175647356.png)]
Obtenir l'élément( Accès entre parenthèses (Valeur de l'index))
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-qVAMuAAp-1658546399399)(scala.assets/image-20211029175846690.png)]
Ajouter un élément(+=)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-sUPqjn17-1658546399399)(scala.assets/image-20211029175938568.png)]
Ajouter une liste(++=)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-MXbURv9O-1658546399400)(scala.assets/image-20211029180022146.png)]
Supprimer l'élément(-=)
De gauche ,Supprimer le premier Éléments spécifiques
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-IQVH3g5A-1658546399408)(scala.assets/image-20211029180057127.png)]
Modifier l'élément( Utilisez les parenthèses pour obtenir les éléments ,Et ensuite assigner des valeurs)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-V3pe10Oa-1658546399409)(scala.assets/image-20211029180143001.png)]
Convertir enList(toList)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-cCqK1zEY-1658546399409)(scala.assets/image-20211029180230402.png)]
Convertir enArray(toArray)
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-S6Q1ophd-1658546399409)(scala.assets/image-20211029180257150.png)]
Liste des opérations courantes
Voici les actions communes à la Liste :
- Déterminer si la liste est vide(isEmpty)
- Assembler deux listes(++)
- Obtenir le premier élément de la liste(head) Et le reste (tail)
- Inverser la Liste(reverse)
- Obtenir le préfixe(take)、Obtenir un suffixe(drop)
- Aplatissement(flaten)
- Fermeture éclair(zip) Et tirer (unzip)
- Chaîne de conversion(toString)
- Générer une chaîne(mkString)
- Union(union)Poids mort(distinct)
- Intersection(intersect)
- Ensemble de différences(diff)
Déterminer si la liste est vide(isEmpty)
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
scala> a.isEmpty
res51: Boolean = false
Assembler deux listes(++)
scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)
scala> val b = List(4,5,6)
b: List[Int] = List(4, 5, 6)
scala> a ++ b
res52: List[Int] = List(1, 2, 3, 4, 5, 6)
Le type précédent est principalement
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-SUHZpedu-1658546399410)(scala.assets/image-20211029182153619.png)]
Obtenir le premier élément de la liste(head) Et le reste (tail)
scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)
scala> a.head
res4: Int = 1
scala> a.tail
res5: List[Int] = List(2, 3)
Inverser la Liste(reverse)
scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)
scala> a.reverse
res6: List[Int] = List(3, 2, 1)
Obtenir le préfixe(take)、Obtenir un suffixe(drop)
scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
scala> a.take(3)
res56: List[Int] = List(1, 2, 3)
scala> a.drop(3)
res60: List[Int] = List(4, 5)
Aplatissement(flaten)
scala> val a = List(List(1,2), List(3), List(4,5))
a: List[List[Int]] = List(List(1, 2), List(3), List(4, 5))
scala> a.flatten
res0: List[Int] = List(1, 2, 3, 4, 5)
Fermeture éclair(zip) Et tirer (unzip)
scala> val a = List("zhangsan", "lisi", "wangwu")
a: List[String] = List(zhangsan, lisi, wangwu)
scala> val b = List(19, 20, 21)
b: List[Int] = List(19, 20, 21)
scala> a.zip(b)
res1: List[(String, Int)] = List((zhangsan,19), (lisi,20), (wangwu,21))
scala> res1.unzip
res2: (List[String], List[Int]) = (List(zhangsan, lisi, wangwu),List(19, 20, 21))
Chaîne de conversion(toString)
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
scala> println(a.toString)
List(1, 2, 3, 4)
Générer une chaîne(mkString)
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
scala> a.mkString
res7: String = 1234
scala> a.mkString(":")
res8: String = 1:2:3:4
Union(union),Poids mort(distinct)
scala> val a1 = List(1,2,3,4)
a1: List[Int] = List(1, 2, 3, 4)
scala> val a2 = List(3,4,5,6)
a2: List[Int] = List(3, 4, 5, 6)
// Opération Union
scala> a1.union(a2)
res17: List[Int] = List(1, 2, 3, 4, 3, 4, 5, 6)
// Peut être appelédistinctPoids mort
scala> a1.union(a2).distinct
res18: List[Int] = List(1, 2, 3, 4, 5, 6)
Intersection(intersect)
scala> val a1 = List(1,2,3,4)
a1: List[Int] = List(1, 2, 3, 4)
scala> val a2 = List(3,4,5,6)
a2: List[Int] = List(3, 4, 5, 6)
scala> a1.intersect(a2)
res19: List[Int] = List(3, 4)
Ensemble de différences(diff)
scala> val a1 = List(1,2,3,4)
a1: List[Int] = List(1, 2, 3, 4)
scala> val a2 = List(3,4,5,6)
a2: List[Int] = List(3, 4, 5, 6)
scala> a1.diff(a2)
res24: List[Int] = List(1, 2)
À la recherche d'éléments index
list.indexOf(str) //Cherche.strInlistIndex in,Retour si non trouvé-1
Tableau
Tableau de longueur fixe(Array)
* Un tableau de longueur fixe est un tableau Longueur - Oui. Aucun changement autorisé De
* Array Élément - Oui. Peut changer De
* InscalaMoyenne, Utilisation générique du tableau `[]`Pour préciser
* Utiliser`()`Pour obtenir des éléments
DéfinitionArray
// Définir un tableau en spécifiant la longueur
val/var Nom de la variable = new Array[Type d'élément](Longueur du tableau)
Par exemple::val array = new Array[Int](3)
// Initialisation directe du tableau avec des éléments
val/var Nom de la variable = Array(Élément1, Élément2, Élément3...)
Par exemple::val array = Array(4,12,6,3,8,9,5)
Modifier
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-5dcFUOsb-1658546420774)(scala.assets/image-20211027172854141.png)]
ArrayTrier
sortWith( )
// Ce tableau de méthodes doit être :Int,Double, Float, Long
sortWith(_ < _) De petit en grand
sortWith(_ > _) Du grand au petit
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-lBwylalG-1658546420776)(scala.assets/image-20211027173107454.png)]
sortBy( )
/* Trier par une colonne */
// Trier par défaut de petit à grand
// .reverse Représente un FLASHBACK sur la liste . sortByEtreverseExpérience de coopération=>Trier de grand à petit
Trier par deuxième colonne :
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-BZz0upJa-1658546420776)(scala.assets/image-20211027173851618.png)]
Tableau de longueur variable(ArrayBuffer)
* Un tableau de longueur variable signifie que la longueur du tableau est variable , Vous pouvez ajouter 、Supprimer l'élément
* Créer un tableau de longueur variable ,Importation anticipée requiseArrayBufferCatégorie
import scala.collection.mutable.ArrayBuffer
DéfinitionBuffer
//Créer videArrayBufferTableau de longueur variable,Structure grammaticale:
val/var a = ArrayBuffer[Type d'élément]()
// Créer un ArrayBuffer
val/var a = ArrayBuffer(Élément1,Élément2,Élément3....)
Supprimer
remove
//Dedata(i)Lève - toi., Suppression continue jÉléments
data.remove(i, j)
Exemple:DeB(2) Commencer à supprimer deux données consécutives .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-Le5SlTrv-1658546420776)(scala.assets/image-20211027172342182.png)]
-=
// De gauche ,Supprimer le premierx
data -= x
Exemple:
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-i9FoL03o-1658546420777)(scala.assets/image-20211029165402269.png)]
Insérer
insert
//Indata.insert(i)Insertion de position xÉlément
data.insert(i, x)
**Exemple:**Prends ça.999Insérer dansB(2)Cette position
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-fM953TdB-1658546420777)(scala.assets/image-20211027172442825.png)]
+=
//IndataAjouter à la queue x (Un peu.pythonDeappendL'odeur de)
data += x
Exemple:
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-6kKN5VLP-1658546420778)(scala.assets/image-20211029165639538.png)]
Fusionner
++=
//data1 Et data2 Fusion de tableaux variables
data1 ++= data2
Exemple:
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-TZLzKkoZ-1658546420778)(scala.assets/image-20211029165921471.png)]
Algorithme Array
Somme — sum
scala> val a = Array(1,2,3,4)
a: Array[Int] = Array(1, 2, 3, 4)
scala> a.sum
res49: Int = 10
Max. — max
scala> val a = Array(4,1,2,4,10)
a: Array[Int] = Array(4, 1, 2, 4, 10)
scala> a.max
res50: Int = 10
Minimum — min
scala> val a = Array(4,1,2,4,10)
a: Array[Int] = Array(4, 1, 2, 4, 10)
scala> a.min
res51: Int = 1
Ordre ascendant — sorted
Inversion du tableau — reverse
// Tri ascendant
scala> a.sorted
res53: Array[Int] = Array(1, 2, 4, 4, 10)
// Ordre décroissant
scala> a.sorted.reverse
res56: Array[Int] = Array(10, 4, 4, 2, 1)
Tuple
// Les tuples peuvent être utilisés pour contenir un ensemble de valeurs de différents types .Par exemple:Nom,Âge,Sexe,Date de naissance.
// Les éléments d'un Tuple sont immuables.
Syntaxe
// Utiliser des parenthèses pour définir les tuples
val/var Tuple = (Élément1, Élément2, Élément3....)
// Utilisez les flèches pour définir les tuples ( Un Tuple n'a que deux éléments )
val/var Tuple = Élément1->Élément2
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-y871NuAp-1658546420779)(scala.assets/image-20211029172436615.png)]
Accéder aux tuples
// Utiliser_1、_2、_3.... Pour accéder aux éléments d'un Tuple ,_1 Indique l'accès au premier élément ,Par analogie
//Attention!,Ça ne marche pas. t(i) Pour visiter Oh
Exemple:
scala> val a = "zhangsan" -> "male"
a: (String, String) = (zhangsan,male)
// Obtenir le premier élément
scala> a._1
res41: String = zhangsan
// Obtenir le deuxième élément
scala> a._2
res42: String = male
Ensemble
Set(Set) Est une collection qui représente un élément sans duplication .Set Ayant les propriétés suivantes :
1. L'élément ne se répète pas
2. L'ordre d'insertion n'est pas garanti
scala L'ensemble est également divisé en deux , L'un est un ensemble immuable , L'autre est l'ensemble variable .
Ensemble immuable
Définir la syntaxe
//Créer un ensemble immuable vide,Format syntaxique:
val/var Nom de la variable = Set[Type]()
//Un élément donné pour créer un ensemble immuable,Format syntaxique:
val/var Nom de la variable = Set(Élément1, Élément2, Élément3...)
Exemple:
// Définir un ensemble immuable vide
scala> val a = Set[Int]()
a: scala.collection.immutable.Set[Int] = Set()
// Définir un ensemble immuable , Enregistrer les éléments suivants :1,1,3,2,4,8
scala> val a = Set(1,1,3,2,4,8)
a: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 8, 4)
Fonctionnement de base
- Obtenir la taille de l'ensemble (size)
- Traverser l'ensemble ( Compatible avec la traversée du tableau )
- Ajouter un élément,Générer unSet(`+`)
- Supprimer un élément,Générer unSet(`-`)
- Assembler deux ensembles ,Générer unSet(++)
- Jeux et listes d'épissage ,Générer unSet(++)
// Créer un ensemble , Vous pouvez voir que l'ensemble est un seul élément ,Désordonné.
scala> val a = Set(1,1,2,3,4,5)
a: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)
Obtenir la taille de l'ensemble (size)
// Obtenir la taille de l'ensemble
scala> a.size
res0: Int = 5
Traverser l'ensemble ( Compatible avec la traversée du tableau )
// Traverser l'ensemble
scala> for(i <- a) println(i)
5
1
6
2
3
4
Ajouter un élément,Générer unSet(+)
//Ajouter un élément
scala> a + 100
res5: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4, 100)
Supprimer un élément,Générer unSet(-)
// Supprimer un élément
scala> a - 1
res5: scala.collection.immutable.Set[Int] = Set(5, 2, 3, 4)
Assembler deux ensembles ,Générer unSet(++)
// Assembler deux ensembles
scala> a ++ Set(6,7,8)
res2: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 7, 3, 8, 4)
Jeux et listes d'épissage ,Générer unSet(++)
// Jeux et listes d'épissage
scala> a ++ List(6,7,8,9)
res6: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 9, 2, 7, 3, 8, 4)
Variable set
Définir la méthode
// Ensembles variables les ensembles immuables sont créés de la même façon , Il suffit d'importer une classe d'ensemble variable à l'avance .
Importation manuelle:
import scala.collection.mutable.Set
Exemple:
import scala.collection.mutable.Set
scala> val a = Set(1,2,3,4)
a: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)
Mode opératoire
Ajouter un élément(+=)
scala> b
res28: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)
scala> b += 111
res29: b.type = Set(1, 2, 3, 111, 4)
Supprimer l'élément(-=)
scala> b
res31: scala.collection.mutable.Set[Int] = Set(1, 3, 111, 4)
scala> b -= 3
res32: b.type = Set(1, 111, 4)
Cartographie(Map)— Dictionnaire
//Map On pourrait appeler ça une cartographie . C'est un ensemble de paires de valeurs clés .InscalaMoyenne,Map Aussi divisées en immuables Map Et variable Map.
//Map C'est pas juste Python Le dictionnaire sur . Y compris le jeu, c'est pareil
* Regarde. : map( Ancienne clé )
* Zeng : map(Nouvelle clé) = Valeur
* Modifier : map( Ancienne clé ) = Valeur
ImmuableMap
Définir la syntaxe
val/var map = Map(Clé->Valeur, Clé->Valeur, Clé->Valeur...) // Recommandations,Meilleure lisibilité
val/var map = Map((Clé, Valeur), (Clé, Valeur), (Clé, Valeur), (Clé, Valeur)...)
**Exemple:**Définir une cartographie, Contient les données suivantes sur le nom et l'âge de l'étudiant . AccèszhangsanÂge
scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 40)
//Ou:
scala> val map = Map(("zhangsan", 30), ("lisi", 30))
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 30)
// SelonkeyAccèsvalue
scala> map("zhangsan")
res10: Int = 30
VariableMap
Définir la syntaxe
// Définir la syntaxe et l'immuable MapD'accord.. Mais la définition est variable MapImportation manuelle requise
import scala.collection.mutable.Map
**Exemple:**Définir une cartographie, Contient les données suivantes sur le nom et l'âge de l'étudiant . Modifier“zhangsan”L'âge de20
import scala.collection.mutable.Map
scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)
// Modifiervalue
scala> map("zhangsan") = 20
//Ajouter une valeur
scala> map("wangwu") = 36
scala> map
res44: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 66, wangwu -> 36)
MapFonctionnement de base
//MapFonctionnement Suivez - moi.Python Le dictionnaire joue exactement de la même façon .
- Obtenir la valeur(`map(key)`)
- Obtenez toutkey(`map.keys`)
- Obtenez toutvalue(`map.values`)
- TraverséemapEnsemble
- getOrElse
- Ajouterkey,valueC'est exact.
- Supprimerkey
Préparation des données,ImmuableMap, VariableMap
scala> val map_NoChange = Map("zhangsan"->30, "lisi"->40)
map_NoChange: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 40)
scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map
scala> val map_Change = Map("zhangsan"->30, "lisi"->40)
map_Change: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)
Obtenir la valeur(map(key))
// AccèszhagnsanÂge
scala> map_NoChange("zhangsan")
res0: Int = 30
scala> map_Change("zhangsan")
res1: Int = 30
Obtenez toutkey(map.keys)
// Obtenir tous les noms des étudiants
scala> map_NoChange.keys
res2: Iterable[String] = Set(zhangsan, lisi)
scala> map_Change.keys
res3: Iterable[String] = Set(lisi, zhangsan)
Obtenez toutvalue(map.values)
// Obtenir tous les âges des étudiants
scala> map_NoChange.values
res4: Iterable[Int] = MapLike.DefaultValuesIterable(30, 40)
scala> map_Change.values
res5: Iterable[Int] = HashMap(40, 30)
TraverséemapEnsemble
// Imprimer tous les noms et âges des étudiants
scala> for((x,y) <- map_NoChange) println(s"$x $y")
zhangsan 30
lisi 40
scala> for((x,y) <- map_Change) println(s"$x $y")
lisi 40
zhangsan 30
Requête,S'il n'y a pas de retourx ( getOrElse(Clé, x) )
// AccèswangwuÂge,SiwangwuN'existe pas,Renvoie-1
scala> map_NoChange.getOrElse("wangwu", -1)
res8: Int = -1
scala> map_Change.getOrElse("wangwu", -1)
res9: Int = -1
Ajouterkey,valueC'est exact.
// Ajouter un étudiant:wangwu, 35
scala> map_NoChange + "wangwu"->36
res10: (String, Int) = (Map(zhangsan -> 30, lisi -> 40)wangwu,36)
scala> map_Change + "wangwu"->36
res11: (String, Int) = (Map(lisi -> 40, zhangsan -> 30)wangwu,36)
// Ça dit ,Comme si c'était mal:
Et ça devient : (map+"wangwu") -> 36 . Parce que -> Priorité supérieure à +
Le résultat est un (String -> Int)Tuple de. Notez ce qui suit::
Résultats._1 = Map(lisi -> 40, zhangsan -> 30)wangwu C'est une chaîne,Non - expression
Résultats._2 = 36 C'est unInt
// C'est mal écrit. , Écris - le comme ça.
scala> map_Change + ("wangwu"->36)
res16: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30, wangwu -> 36)
scala> map_NoChange + ("wangwu"->36)
res17: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 40, wangwu -> 36)
Supprimerkey
// Oui.lisi Supprimer de la carte variable
scala> map_NoChange - "lisi"
res14: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30)
scala> map_Change - "lisi"
res15: scala.collection.mutable.Map[String,Int] = Map(zhangsan -> 30)
Tranche(slice)
//Utilisation etpythonC'est pareil,Mais l'écriture est différente.
//scala Pour la tranche de slice
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-50h1rQdC-1658546420779)(scala.assets/image-20211124092843158.png)]
Itérateur(iterator)
// scala Un Itérateur est fourni pour chaque type de collection (iterator), Utilisé pour itérer l'accès à la collection .
Traverser la collection avec un Itérateur
* Utiliser`iterator` La méthode peut obtenir un Itérateur de la collection
* Deux opérations de base de l'Itérateur
* hasNext—— Demande s'il y a un élément suivant dans le conteneur
* next——Renvoie l'élément suivant de l'Itérateur,Si ce n'est pas le cas,JetezNoSuchElementException
* Chaque Itérateur est stateful
* Conserver la position du dernier élément après l'itération
* Utilisez à nouveau pour lancer NoSuchElementException
* Peut être utiliséwhileOufor Pour retourner les éléments un par un
Exemple:Définir une liste, Contient les éléments suivants :1,2,3,4,5. UtiliserwhileBoucles et itérateurs, Imprimer la liste à travers
scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
scala> val ite = a.iterator
ite: Iterator[Int] = non-empty iterator
scala> while(ite.hasNext){
| println(ite.next)
| }
1
2
3
4
5
scala>
Avecfor Itérateur pratique
scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
scala> a
res0: List[Int] = List(1, 2, 3, 4, 5)
scala> val ite = a.iterator
ite: Iterator[Int] = non-empty iterator
scala> for (i <- ite)println(i)
1
2
3
4
5
scala>
Programmation fonctionnelle
// Nous utiliserons Spark/Flink Un grand nombre de codes d'affaires sont utilisés pour la programmation fonctionnelle . Les actions suivantes sont au centre de l'apprentissage .
- Traversée(`foreach`)
- Cartographie(`map`)
- Aplatissement de la carte (`flatmap`)
- Filtration(`filter`)
- Existe - t - il?(`exists`)
- Trier(`sorted`、`sortBy`、`sortWith`)
- Groupe(`groupBy`)
- Calcul agrégé(`reduce`)
- Repliement(`fold`)
Traversée(foreach)
//Avant, J'ai appris à utiliser for Expression pour traverser la collection .Nous apprendrons ensuitescalaProgrammation fonctionnelle pour,Utiliser`foreach`Méthode de traversée、Itération. Il rend le code plus concis .
//Attention!,foreach Il n'y a pas de valeur de retour .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-aimQskku-1658546449761)(scala.assets/image-20211030111532441.png)]
foreachProcessus d'exécution
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-GScfMzdY-1658546449763)(scala.assets/image-20211030111623440.png)]
**Exemple:**Il y a une liste, Contient les éléments suivants 1,2,3,4,Veuillez utiliserforeach Méthode pour tracer chaque élément à travers
// Définir une liste
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
// Impression itérative
scala> a.foreach((x:Int)=>println(x))
Simplifier la définition de la fonction en utilisant l'inférence de type :
/* La définition de la fonction de cas ci - dessus est un peu verbeuse , Nous avons une écriture plus concise .Parce que l'utilisationforeach Aller à la liste des itérations , Et chaque type d'élément de la liste est déterminé * scala Le type de paramètre de chaque élément de la collection peut être déduit automatiquement * Lors de la création d'une fonction, Vous pouvez omettre le type de sa liste de paramètres */
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
// Omettre le type de paramètre
scala> a.foreach((x)=>println(x))
// S'il n'y a qu'un seul paramètre,Alors:Les parenthèses peuvent être omises.
scala> a.foreach(x=>println(x))
Utiliser un soulignement pour simplifier la définition de la fonction :
/* Lorsque le paramètre de fonction, N'apparaît qu'une seule fois dans le corps de la fonction , Et quand le corps de la fonction n'a pas d'appels imbriqués , Vous pouvez utiliser des soulignements pour simplifier la définition de la fonction */
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
scala> a.foreach(println(_))
//Paramètres de la fonctionx N'apparaît qu'une seule fois dans le corps de la fonction ,Juste pour_
//* Si le paramètre de méthode est une fonction , Si un soulignement apparaît ,scala Le compilateur encapsule automatiquement le code dans une liste d'arguments dans une fonction, également par scala Traitement automatique par le compilateur
Cartographie(map)
//EtpythonOui.map Jouer de la même façon .
// L'opération de cartographie de la collection est en cours d'écriture Spark/FlinkL'opération la plus utilisée,C'est ce que nous devons maîtriser. Parce que lorsque les données sont calculées , Est un processus de conversion d'un type de données à un autre .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-KEi0yDb2-1658546449763)(scala.assets/image-20211030114318070.png)]
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-7O8fdESs-1658546449764)(scala.assets/image-20211030114357908.png)]
Exemple: C'est exact.List Chaque élément de plus 1
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
//Écrire1
scala> a.map(x=>x+1)
res4: List[Int] = List(2, 3, 4, 5)
//Écrire2
scala> a.map(_ + 1)
res4: List[Int] = List(2, 3, 4, 5)
//Écrire3: Fonction d'appel direct, Et méthodes1, 2 L'essence est la même.
scala> val add = (x:Int, y:Int) => x + y
add: (Int, Int) => Int = $$Lambda$1142/1505791581@7d83321a
scala> val x = a.map(add(_,1))
x: List[Int] = List(2, 3, 4, 5)
Aplatissement de la carte (flatmap)
// Tu peux mettreflatMap, Compris comme le premier map,Et puis...flatten
- map Est de convertir les éléments de la liste en un List
- flatten Aplatir la liste entière
**Exemple:**Il y a une liste de plusieurs lignes de texte:“hadoop hive spark flink flume”, “kudu hbase sqoop storm” . Obtenez chaque mot dans la ligne de texte , Et mettez chaque mot sur la liste .
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-JvqFwWw9-1658546449764)(scala.assets/image-20211030115625456.png)]
scala> val a = List("hadoop hive spark flink flume","kudu hbase sqoop storm")
a: List[String] = List(hadoop hive spark flink flume, kudu hbase sqoop storm)
// map + flatten Pratiques
scala> a.map(_.split(" "))
res20: List[Array[String]] = List(Array(hadoop, hive, spark, flink, flume), Array(kudu, hbase, sqoop, storm))
scala> a.map(_.split(" ")).flatten
res21: List[String] = List(hadoop, hive, spark, flink, flume, kudu, hbase, sqoop, storm)
// flatMap Pratiques
scala> a.flatMap(x => x.split(" "))
res24: List[String] = List(hadoop, hive, spark, flink, flume, kudu, hbase, sqoop, storm)
Filtration(filter)
// Filtrer les éléments qui répondent à certaines conditions
Exemple:1–10Moyenne, Filtré, donc pair
scala> val a = (1.to(10)).toList
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> a.filter(_ % 2 == 0)
res28: List[Int] = List(2, 4, 6, 8, 10)
Existe - t - il?(exists)
Trier(sorted、sortBy、sortWith)
// InscalaEnsemble, Vous pouvez trier de plusieurs façons
* sortedTri par défaut
* sortBySpécifier le tri des champs
* sortWithTri personnalisé
sortedTri par défaut
scala> List(3,1,2,9,7).sorted
res16: List[Int] = List(1, 2, 3, 7, 9)
sortBySpécifier le tri des champs
// Après conversion en fonction de la fonction entrante ,Trier à nouveau
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-ZHo938Jb-1658546449765)(scala.assets/image-20211030121406153.png)]
//L'expérience1: Attention à voir , C'est la situation du cheval sacré.
scala> val a = List("01 hadoop", "02 flume", "03 hive", "04 spark")
a: List[String] = List(01 hadoop, 02 flume, 03 hive, 04 spark)
scala> a.sortBy(_.split(" ")(1))
res30: List[String] = List(02 flume, 01 hadoop, 03 hive, 04 spark)
scala> a.sortBy(_.split(" ")(0))
res31: List[String] = List(01 hadoop, 02 flume, 03 hive, 04 spark)
//L'expérience2:
scala> b
res43: List[(String, Int)] = List((zhangsan,19), (lisi,55), (wangwu,22))
scala> b.sortBy(_._1)
res47: List[(String, Int)] = List((lisi,55), (wangwu,22), (zhangsan,19))
scala> b.sortBy(_._2)
res48: List[(String, Int)] = List((zhangsan,19), (wangwu,22), (lisi,55))
sortWithTri personnalisé
//Tri personnalisé, Commande personnalisée basée sur une fonction
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-c2JuleVi-1658546449765)(scala.assets/image-20211030121440557.png)]
scala> val a = List(2,3,1,6,4,5)
a: List[Int] = List(2, 3, 1, 6, 4, 5)
scala> a.sortWith((x,y) => if(x<y)true else false)
res15: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> res15.reverse
res18: List[Int] = List(6, 5, 4, 3, 2, 1)
/* Utilisez le soulignement pour raccourcir les cas ci - dessus */
// Le paramètre de fonction n'apparaît qu'une seule fois dans la fonction ,Au lieu de
scala> a.sortWith(_ < _).reverse
res19: List[Int] = List(6, 5, 4, 3, 2, 1)
Groupe(groupBy)
Si nous voulons regrouper les données pour l'analyse statistique , Vous devez utiliser la méthode de regroupement
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-MBDp51Vs-1658546449766)(scala.assets/image-20211030122607884.png)]
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-sLffQJkY-1658546449766)(scala.assets/image-20211030122630438.png)]
/* 《Résumé : groupBy Regroupement des données》 1. La valeur de retour est un dictionnaire(Map) Map(key1 -> List(key1 Données du Groupe valeur complète ), key2 -> List(key2 Données du Groupe valeur complète )) Par exemple: List("Zhang San"->"Hommes", "Li - si."->"Femme", "Wang Wu"->"Hommes") .a.groupBy(_._2) Je l'ai.:Map(Hommes -> List((Zhang San,Hommes), (Wang Wu,Hommes)), Femme -> List((Li - si.,Femme))) */
Exemple: Regroupement des élèves par sexe
scala> val a = List("Zhang San"->"Hommes", "Li - si."->"Femme", "Wang Wu"->"Hommes")
a: List[(String, String)] = List((Zhang San,Hommes), (Li - si.,Femme), (Wang Wu,Hommes))
// Groupe par sexe
scala> a.groupBy(_._2)
res0: scala.collection.immutable.Map[String,List[(String, String)]] = Map(Hommes -> List((Zhang San,Hommes), (Wang Wu,Hommes)),
Femme -> List((Li - si.,Femme)))
// Convertir la cartographie groupée en sexe / Liste des tuples de personnes
scala> res0.map(x => x._1 -> x._2.size)
res3: scala.collection.immutable.Map[String,Int] = Map(Hommes -> 2, Femme -> 1)
Calcul agrégé(reduce)
//Opérations d'agrégation, Les données d'une liste peuvent être fusionnées en un . Cette opération est souvent utilisée dans l'analyse statistique
//reduce Indique que la liste , Passer dans une fonction pour le calcul de l'agrégation
/* reduceEtreduceLeftEffet cohérent, Représente le calcul de gauche à droite reduceRight Représente le calcul de droite à gauche */
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-Do8H3RnF-1658546449767)(scala.assets/image-20211030123524634.png)]
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-MS1YTuhc-1658546449767)(scala.assets/image-20211030123542043.png)]
**Exemple:**Somme
scala> val a = List(1,2,3,4,5,6,7,8,9,10)
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> a.reduce((x,y) => x + y)
res5: Int = 55
// Le premier soulignement indique le premier paramètre , Est le résultat des données agrégées de l'histoire
// Le deuxième soulignement indique le deuxième paramètre , Est l'élément de données actuellement agrégé
scala> a.reduce(_ + _)
res53: Int = 55
// AvecreduceC'est pareil,Calculé de gauche à droite
scala> a.reduceLeft(_ + _)
res0: Int = 55
// Calcul de l'agrégation de droite à gauche
scala> a.reduceRight(_ + _)
res1: Int = 55
Repliement(fold)
//foldAvecreduceC'est très similaire., Mais il y a un paramètre de valeur initiale supplémentaire spécifié
/* foldEtfoldLetEffet cohérent, Représente le calcul de gauche à droite foldRight Représente le calcul de droite à gauche */
[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-Nvdw5HFK-1658546449768)(scala.assets/image-20211030123736570.png)]
**Exemple:**Définir une liste, Contient les éléments suivants :1,2,3,4,5,6,7,8,9,10 Utiliserfold Méthode de calcul de la somme de tous les éléments .
scala> val a = List(1,2,3,4,5,6,7,8,9,10)
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> a.fold(0)(_ + _)
res4: Int = 155
À propos descala J'ai terminé mes études d'initiation. .
Mentions de copyright
Auteur de cet article [Daning!],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207232106554040.html
Recommandé par sidebar
- Transplantation de systèmes embarqués
- Saisissez une chaîne de caractères à partir du clavier et affichez différents caractères et le nombre d'occurrences de chaque caractère. (la sortie n'est pas séquentielle) résoudre le problème en utilisant la méthode commune de la classe de chaîne
- 2019 Bar _ Aaai ICCN
- Conditions affectant la vitesse de requête de l'interface
- Stack et file d'attente de l'adaptateur STL
- Analyse de la stratégie de lecture et d'écriture du cache
- Classes et objets (1)
- Expérience II Yuv
- Comment synchroniser
- [arxiv2022] grouptransnet: Group transformer Network for RGB - D Salient Object Detection
Devinez que vous aimez
Avantages de la salle des machines bgp
La fosse Piétinée par l'homme vous dit d'éviter les 10 erreurs courantes dans les tests automatisés
Déterminer s'il s'agit d'un type vide
Langue C - quelques exercices classiques de langue C
Openvino Datawhale
Question 300 Leçon 6 type quadratique
Analyse du code source et de la conception de redis - - 7. Liste rapide
Concepts et différences de bits, bits, octets et mots
Déploiement du projet (version abrégée)
JDBC Learning and simple Encapsulation
Recommandé au hasard
- [Python flask note 5] Blueprint simple à utiliser
- Composants web - cycle de vie des éléments personnalisés
- Entrepôt de données 4.0 Notes - acquisition de données commerciales
- Entrepôt de données 4.0 Notes - acquisition de données sur le comportement de l'utilisateur II
- Affichage itératif des fichiers.h5, opérations de données h5py
- Résumé des connaissances mathématiques communes
- Comment se développe le serveur GPU refroidi à l'eau dans le Centre de données dans le cadre de l'informatique est - Ouest?
- Connaissance du matériel 1 - schéma et type d'interface (basé sur le tutoriel vidéo complet de l'exploitation du matériel de baiman)
- Examen des principes fondamentaux de la structure en acier
- Unity3d: ugui source, Rebuild Optimization
- Solution rapide: xshell ne peut pas glisser dans un dossier ou un paquet
- Rhcsa - - parcourir le contenu du fichier, couper, uniq, trier, utiliser les commandes.tr
- Intégrité du signal (si) intégrité de l'alimentation électrique (PI) notes d'apprentissage (32) Réseau de distribution d'énergie (4)
- Quelle est la raison pour laquelle la plate - forme easygbs ne peut pas lire l'enregistrement vidéo et a un phénomène de streaming répété rtmp?
- Notes du jour 7
- 【 Visual Dispatching Software】 Shanghai Dow Ning apporte netronic download, Trial, tutoriel pour l'Organisation SMB
- 2. Les règles quantitatives
- Événements courants de la souris et du clavier
- C #: in, out, ref Keywords
- Connaissance détaillée du GRE, du mgre; Connaissance de la configuration de base de l'OSPF
- Comment creo 9.0 modifie - t - il rapidement le système de coordonnées Cao?
- Notes du jour 5
- Renforcement de l'apprentissage - points de compréhension du gradient stratégique
- Le shell a besoin de connaître les commandes
- Okrk3399 Development Board Reserved i2c4 Mounting EEPROM
- Optimisation du serveur Cloud Huawei avec connexion clé
- Chapitre 2 requête de base et tri
- 【 langage c】 devinez jeux numériques + applet d'arrêt
- Qu'est - ce que le codage par titre?
- Feignclient utilise un tutoriel détaillé (illustration)
- Kettle implémente une connexion de base de données partagée et insère une instance de composant de mise à jour
- Simulation de modulation et de démodulation du signal CBOC basée sur MATLAB, sortie de corrélation, spectre de puissance et suivi de décalage de fréquence
- Les raccourcis clavier liés à l'onglet ne peuvent pas être utilisés après la mise à jour du vscode
- Expression du suffixe (une question par jour pendant les vacances d'été 4)
- Idées de conception sur l'initialisation des paramètres d'entrée de page
- Éléments de base de la validation des haricots - 04
- Une solution complète au problème du sac à dos dans la programmation dynamique
- Récursion des bosses 1: formule récursive
- Explication détaillée de l'injection aveugle d'erreur SQL
- Données chronologiques dans l'Internet industriel des objets