数组
不可变数组
package learn04
object ScalaCollection {
def main( args: Array[ String ] ) : Unit = {
val arr01= new Array[ Int ] ( 4 )
println( arr01. length)
arr01( 3 ) = 10
val i= 10
arr01( i/ 3 ) = 20
arr01. update( 0 , 1 )
println( arr01. mkString( "," ) )
for ( i<- arr01) {
println( i)
}
def printx( elem: Int ) : Unit = {
println( elem)
}
arr01. foreach( printx)
arr01. foreach( ( x) => { println( x) } )
arr01. foreach( println( _) )
arr01. foreach( println)
}
}
4
1 , 0 , 0 , 20
1
0
0
20
1
0
0
20
1
0
0
20
1
0
0
20
1
0
0
20
package learn04
object ScalaCollection{
def main( args: Array[ String ] ) : Unit = {
val arr1= Array( 1 , 2 , 3 , 4 )
val arr2= Array( 5 , 6 , 7 , 8 )
val arr3: Array[ Int ] = arr1: + 4
print( "arr3:" )
println( arr3. mkString( "," ) )
println( arr1 eq arr3)
val arr4: Array[ Int ] = arr1++ : arr2
val arr5: Array[ Int ] = arr1++ arr2
print( "arr4:" )
println( arr4. mkString( "," ) )
print( "arr5:" )
println( arr5. mkString( "," ) )
var myMatrix= Array. ofDim[ Int ] ( 3 , 3 )
myMatrix. foreach( list=> list. foreach( println) )
val arr6: Array[ Int ] = Array. concat( arr1, arr2)
println( arr6. mkString( "," ) )
val arr7: Array[ Int ] = Array. range( 0 , 2 )
println( arr7. mkString( "," ) )
val arr8: Array[ Int ] = Array. fill[ Int ] ( 5 ) ( - 1 )
println( arr8. mkString( "," ) )
}
}
arr3: 1 , 2 , 3 , 4 , 4
false
arr4: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
arr5: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
0
0
0
0
0
0
0
0
0
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
0 , 1
- 1 , - 1 , - 1 , - 1 , - 1
可变数组
package learn04
import scala. collection. mutable. ArrayBuffer
object demo01 {
def main( args: Array[ String ] ) : Unit = {
val buffer= new ArrayBuffer[ Int ]
buffer. append( 1 , 2 , 3 , 4 )
println( buffer. mkString( "," ) )
buffer. update( 0 , 5 )
buffer( 1 ) = 6
println( buffer. mkString( "," ) )
buffer. remove( 2 )
println( buffer. mkString( "," ) )
println( buffer( 1 ) )
for ( i <- buffer) {
print( i+ " " )
}
}
}
1 , 2 , 3 , 4
5 , 6 , 3 , 4
5 , 6 , 4
6
5 6 4
package learn04
import scala. collection. mutable. ArrayBuffer
object demo01 {
def main( args: Array[ String ] ) : Unit = {
val buffer1= ArrayBuffer( 1 , 2 , 3 , 4 )
val buffer2= ArrayBuffer( 5 , 6 , 7 , 8 )
val buffer3: ArrayBuffer[ Int ] = buffer1+= 5
print( "buffer3:" )
println( buffer3. mkString( "," ) )
println( buffer1 eq buffer3)
val buffer4: ArrayBuffer[ Int ] = buffer1++ buffer2
print( "buffer4:" )
println( buffer4. mkString( "," ) )
val buffer5: ArrayBuffer[ Int ] = buffer1++ = buffer2
print( "buffer5:" )
println( buffer5. mkString( "," ) )
println( buffer1 eq buffer4)
println( buffer1 eq buffer5)
}
}
buffer3: 1 , 2 , 3 , 4 , 5
true
buffer4: 1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8
buffer5: 1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8
false
true
可变数组和不可变数组转换
package learn04
import scala. collection. mutable
import scala. collection. mutable. ArrayBuffer
object demo02 {
def main( args: Array[ String ] ) : Unit = {
val buffer= ArrayBuffer( 1 , 2 , 3 , 4 )
val array= Array( 4 , 5 , 6 , 7 )
val buffer1: mutable. Buffer[ Int ] = array. toBuffer
val array1: Array[ Int ] = buffer. toArray
}
}
Seq集合
不可变List
package learn04
object demo03 {
def main( args: Array[ String ] ) : Unit = {
val list= List( 1 , 2 , 3 , 4 )
println( "list:" , list)
val list1: List[ Int ] = list: + 1
println( "list1:" , list1)
println( list1 eq list)
list1. foreach( print)
val list2: List[ Int ] = 1 + : list
println( )
print( "list2:" )
list2. foreach( print)
val list3: List[ Int ] = list. updated( 1 , 5 )
println( )
println( list eq list3)
print( "list3:" )
list3. foreach( print)
}
}
( list: , List( 1 , 2 , 3 , 4 ) )
( list1: , List( 1 , 2 , 3 , 4 , 1 ) )
false
12341
list2: 11234
false
list3: 1534
package learn04
object demo04 {
def main( args: Array[ String ] ) : Unit = {
val list1= List( 1 , 2 , 3 , 4 )
val list2: List[ Nothing ] = List( )
val nil= Nil
println( list2. mkString( "," ) )
println( list2 eq nil)
val list3: List[ Int ] = 1 :: 2 :: 3 :: Nil
val list4: List[ Int ] = list1:: : Nil
println( list3. mkString( "," ) )
println( list4. mkString( "," ) )
val list5: List[ Int ] = List. concat( list3, list4)
println( list5. mkString( "," ) )
val list6: List[ String ] = List. fill[ String ] ( 3 ) ( "a" )
println( list6. mkString( "," ) )
}
}
true
1 , 2 , 3
1 , 2 , 3 , 4
1 , 2 , 3 , 1 , 2 , 3 , 4
a, a, a
可变List
package learn04
import scala. collection. mutable. ListBuffer
object demo05 {
def main( args: Array[ String ] ) : Unit = {
val buffer= new ListBuffer[ Int ] ( )
buffer. append( 1 , 2 , 3 , 4 )
buffer. update( 1 , 3 )
println( buffer. mkString( "," ) )
buffer. remove( 2 , 2 )
buffer. foreach( println)
}
}
1 , 3 , 3 , 4
1
3
package learn04
import scala. collection. mutable. ListBuffer
object demo06 {
def main( args: Array[ String ] ) : Unit = {
val buffer1= ListBuffer( 1 , 2 , 3 , 4 )
val buffer2= ListBuffer( 5 , 6 , 7 , 8 )
val buffer3: ListBuffer[ Int ] = buffer1: + 5
val buffer4: ListBuffer[ Int ] = buffer1+= 5
val buffer5: ListBuffer[ Int ] = buffer1++ buffer2
val buffer6: ListBuffer[ Int ] = buffer1++ = buffer2
println( buffer3. mkString( "," ) )
println( buffer4. mkString( "," ) )
println( buffer5. mkString( "," ) )
println( buffer6. mkString( "," ) )
println( buffer5 eq buffer1)
println( buffer6 eq buffer1)
val buffer7: ListBuffer[ Int ] = buffer1- 2
val buffer8: ListBuffer[ Int ] = buffer1-= 2
println( buffer7 eq buffer1)
println( buffer8 eq buffer1)
}
}
1 , 2 , 3 , 4 , 5
1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8
1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8
1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8
false
true
false
true
可变集合和不可变集合转换
package learn04
import scala. collection. mutable
import scala. collection. mutable. ListBuffer
object demo07 {
def main( args: Array[ String ] ) : Unit = {
val buffer= ListBuffer( 1 , 2 , 3 , 4 )
val list= List( 5 , 6 , 7 , 8 )
val list1: List[ Int ] = buffer. toList
val buffer1: mutable. Buffer[ Int ] = list. toBuffer
}
}
Set集合
不可变Set
package learn04
object demo08 {
def main( args: Array[ String ] ) : Unit = {
val set1= Set( 1 , 2 , 3 , 4 )
val set2= Set( 5 , 6 , 7 , 8 )
val set3: Set[ Int ] = set1+ 5
val set4: Set[ Int ] = set1+ ( 5 , 6 , 7 , 8 )
println( set1 eq set3)
println( set1 eq set4)
set4. foreach( print)
val set5: Set[ Int ] = set1- 2 - 3
println( )
set5. foreach( print)
val set6: Set[ Int ] = set1++ set2
println( )
set6. foreach( print)
val set7: Set[ Int ] = set2++ : set1
println( )
set7. foreach( print)
println( )
println( set6 eq set7)
}
}
false
false
51627384
14
51627384
51627384
false
可变Set
package learn04
import scala. collection. mutable
object demo09 {
def main( args: Array[ String ] ) : Unit = {
val set1= mutable. Set( 1 , 2 , 3 , 4 )
val set2= mutable. Set( 5 , 6 , 7 , 8 )
set1. add( 5 )
set1. update( 6 , true )
println( set1. mkString( "," ) )
set1. update( 3 , false )
println( set1. mkString( "," ) )
set1. remove( 2 )
println( set1. mkString( "," ) )
}
}
1 , 5 , 2 , 6 , 3 , 4
1 , 5 , 2 , 6 , 4
1 , 5 , 6 , 4
package learn04
import scala. collection. mutable
object demo10 {
def main( args: Array[ String ] ) : Unit = {
val set1= mutable. Set( 1 , 2 , 3 , 4 )
val set2= mutable. Set( 4 , 5 , 6 , 7 )
val set3: mutable. Set[ Int ] = set1& set2
println( set3. mkString( "," ) )
val set4: mutable. Set[ Int ] = set1& ~ set2
println( set4. mkString( "," ) )
}
}
4
1 , 2 , 3
Map集合
不可变Map
package learn04
object demo11 {
def main( args: Array[ String ] ) : Unit = {
val map1= Map( "a" -> 1 , "b" -> 2 , "c" -> 3 )
val map2= Map( "d" -> 4 , "e" -> 5 , "f" -> 6 )
val map3= map1+ ( "d" -> 4 )
val map4= map3- "d"
println( map4. mkString( "," ) )
val map5: Map[ String , Int ] = map1++ map2
println( map5. mkString)
val map6: Map[ String , Int ] = map1++ : map2
println( map6. mkString)
val map7: Map[ String , Int ] = map1. updated( "b" , 5 )
println( map7. mkString( "," ) )
}
}
a -> 1 , b -> 2 , c -> 3
e -> 5f -> 6 a -> 1 b -> 2 c -> 3d -> 4
e -> 5f -> 6 a -> 1 b -> 2 c -> 3d -> 4
a -> 1 , b -> 5 , c -> 3
package learn04
object demo12 {
def main( args: Array[ String ] ) : Unit = {
val map1= Map( "a" -> 1 , "b" -> 2 , "c" -> 3 )
val map2= Map( "d" -> 4 , "e" -> 5 , "f" -> 6 )
val empty: Map[ String , Int ] = Map. empty
println( empty)
val i: Int = map1. apply( "c" )
println( map1( "c" ) )
val maybeInt: Option[ Int ] = map1. get( "c" )
if ( ! maybeInt. isEmpty) {
println( maybeInt. get)
} else {
println( maybeInt. getOrElse( 0 ) )
}
println( map1. getOrElse( "c" , 0 ) )
}
}
Map( )
3
3
3
可变Map
package learn04
import scala. collection. mutable
object demo13 {
def main( args: Array[ String ] ) : Unit = {
val map1= mutable. Map( "a" -> 1 , "b" -> 2 , "c" -> 3 )
val map2= mutable. Map( "d" -> 4 , "e" -> 5 , "f" -> 6 )
map1. put( "d" , 4 )
val map3: mutable. Map[ String , Int ] = map1+ ( "e" -> 4 )
println( map3. mkString( "," ) )
val map4: mutable. Map[ String , Int ] = map1+= ( "e" -> 5 )
println( map4. mkString( "," ) )
map1. update( "e" , 8 )
map1( "e" ) = 8
map1. remove( "e" )
val map5: mutable. Map[ String , Int ] = map1- "e"
println( map5. mkString( "," ) )
val map6: mutable. Map[ String , Int ] = map1-= "e"
println( map6. mkString( "," ) )
println( "清除前map1:" + map1. mkString( "," ) )
map1. clear( )
println( "清除后map1:" + map1. mkString( "," ) )
}
}
e -> 4 , b -> 2 , d -> 4 , a -> 1 , c -> 3
e -> 5 , b -> 2 , d -> 4 , a -> 1 , c -> 3
b -> 2 , d -> 4 , a -> 1 , c -> 3
b -> 2 , d -> 4 , a -> 1 , c -> 3
清除前map1: b -> 2 , d -> 4 , a -> 1 , c -> 3
清除后map1:
package learn04
import scala. collection. mutable
object demo14 {
def main( args: Array[ String ] ) : Unit = {
val map1= mutable. Map( "a" -> 1 , "b" -> 2 , "c" -> 3 )
val map2= mutable. Map( "d" -> 4 , "e" -> 5 , "f" -> 6 )
val set: Set[ ( String , Int ) ] = map1. toSet
val list: List[ ( String , Int ) ] = map1. toList
val seq: Seq[ ( String , Int ) ] = map1. toSeq
val array: Array[ ( String , Int ) ] = map1. toArray
println( map1. mkString( "," ) )
println( set. mkString( "," ) )
println( list. mkString( "," ) )
println( seq. mkString( "," ) )
println( array. mkString( "," ) )
println( map1. get( "a" ) )
println( map1. getOrElse( "a" , 0 ) )
println( map1. keys)
println( map1. keySet)
println( map1. keysIterator)
println( map1. values)
println( map1. valuesIterator)
}
}
b -> 2 , a -> 1 , c -> 3
( b, 2 ) , ( a, 1 ) , ( c, 3 )
( b, 2 ) , ( a, 1 ) , ( c, 3 )
( b, 2 ) , ( a, 1 ) , ( c, 3 )
( b, 2 ) , ( a, 1 ) , ( c, 3 )
Some( 1 )
1
Set( b, a, c)
Set( b, a, c)
< iterator>
HashMap( 2 , 1 , 3 )
< iterator>