La position actuelle:Accueil du site>Scala Programming (Junior)

Scala Programming (Junior)

2022-07-23 21:09:15Daning!

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érieMé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
13byte[] 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.
30String 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é au hasard