Scala (7) - ① - 데이터 구조 - 집합 - Array 와 List, ListBuffer
public class ImmutableDemo01ForJava {
public static void main(String[] args) {
// 1. , ,
int []nums = new int[3];
nums[2] = 2;
// nums[3] = 1
// 2. ,
ArrayList arrayList = new ArrayList();
arrayList.add("t1");
System.out.println(arrayList.hashCode());
arrayList.add("t2");
System.out.println(arrayList.hashCode());
}
}
스칼라 의 집합
특징.
과
,
Seq
, Set
, Map
모든 집합 은 Iterable 특질 에서 확장 되 고 Scala 에서 집합 은 가 변 (mutable) 과 가 변 (immutable) 두 가지 유형 이 있 습 니 다. image.png
가 변 집합 계승 차원 일란 도
image.png
세부 사항
1 to 3
은 IndexSeq 에 기반 한 벡터 String
역시 indexSeq
Queue Stack
은 LinearSeq
에 속한다. 즉
의 것 이다.
IndexSeq
와 LinearSeq
. IndexSeq
는 색인 을 바탕 으로 하 는 서열 이 고 LinearSeq
은 선형 서열 ① 배열
Why
Scala 는
와
를 동시에 지원 합 니 다. 가 변 집합 은 스 레 드 가 안전 합 니 다.창 - 방식 1 - new Array
/**
* @author sweetcs
*/
object ArrayDemo01 {
def main(args: Array[String]): Unit = {
//
var arr = new Array[Int](4)
println(" =" + arr.length)
println(" :")
for (item
창 - 방식 2 - Array
/**
* @author sweetcs
*/
object ArrayDemo02ForApply {
def main(args: Array[String]): Unit = {
// Any.
var array = Array(1, 2, "beijing")
// Int.
var arrayOfInts = Array(1,2)
for (item
길 어 지 는 배열 - Array Buffer
창 - 길 어 지 는 배열 의 첨삭 검사
/**
* @author sweetcs
*/
object MutableArrayDemo01 {
def main(args: Array[String]): Unit = {
val arrayBuffer = ArrayBuffer[Any](2,3,"beijing")
println(arrayBuffer(2))
println(arrayBuffer.hashCode())
//
arrayBuffer.append(5, 6)
println(arrayBuffer.hashCode())
//
arrayBuffer.remove(0)
//
for (item
정장 수조 와 변장 수조 의 전환
/**
* @author sweetcs
*/
object MutableArrayDemo02ForTranslateImutable {
def main(args: Array[String]): Unit = {
val arrayBuffer = ArrayBuffer(1,2,"beijing")
val array = arrayBuffer.toArray
println(array.hashCode(), arrayBuffer.hashCode())
println(" ")
for (item
다 차원 배열
문법
// 3 Double
val arr = Array.ofDim[Double](3,4)
다 차원 배열 데모
/**
* @author sweetcs
*/
object ArrayDemo05ForMultiplyDimArray {
def main(args: Array[String]): Unit = {
val arr = Array.ofDim[Int](3, 4)
//
println(" case==========")
for (row
자바 배열 (List) 과 스칼라 배열 (Array Buffer) 의 상호 전환
object ArrayDemo06ForScalaArrayToJavaArray {
def main(args: Array[String]): Unit = {
// ArrayBuffer
val arr = ArrayBuffer("1", "2", "3")
// import 【 】
//implicit def bufferAsJavaList[A](b : scala.collection.mutable.Buffer[A]) : java.util.List[A]
import scala.collection.JavaConversions.bufferAsJavaList
//
val javaArr = new ProcessBuilder(arr)
// List
val arrList = javaArr.command()
println(arrList) // [1, 2, 3]
}
}
object ArrayDemo07ForJavaArrayToScalaArray {
def main(args: Array[String]): Unit = {
val arrList = new java.util.ArrayList[String]()
import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable
// java.util.List ==> Buffer
val scalaArr: mutable.Buffer[String] = arrList
scalaArr.append("jack")
scalaArr.append("tom")
println(scalaArr)
scalaArr.remove(0)
println(scalaArr) // (2,3,jack,tom)
}
}
What
: 집합 자체 가 변화 할 수 없고 자바 의 배열 과 유사 하 며 동태 적 인 성장 이 아니다
: 집합 자체 가 변화 할 수 있다 override def toBuffer[A1 >: A]: mutable.Buffer[A1] = {
val result = new mutable.ArrayBuffer[A1](size)
copyToBuffer(result)
result
}
Details
입 니 다. Seq\Set\Map
로 Array List
,
는
, 낡은 수조 ② 원조
Why
원 그룹 문법
작은 괄호 로 원 그룹 을 표시 합 니 다.
val t = (1,23,"we are")
모듈 데모
object TupleDemo01 {
def main(args: Array[String]): Unit = {
val tuple1 = (1,2,3,4,"hello")
println(tuple1, tuple1.getClass) // ((1,2,3,4,hello),class scala.Tuple5)
}
}
object TupleDemo02ForAccess {
def main(args: Array[String]): Unit = {
val tuple = (1, 2, 3, "beijing")
println(tuple._1)
println(tuple.productElement(0))
println(" ")
// ,
for (item
What
원 그룹의 접근 - 색인 방식 (0 시작) 원리
@throws(classOf[IndexOutOfBoundsException])
override def productElement(n: Int) = n match {
case 0 => _1
case 1 => _2
case 2 => _3
case 3 => _4
case _ => throw new IndexOutOfBoundsException(n.toString())
}
Details
이 가장 많 았 다
개. Why
List 는 Seq 의 하위 클래스 로 요 소 를 순서대로 저장 합 니 다.
How
가 변 목록
val list = List(1, 2, 3, "beijing")
/**
* @author sweetcs
*/
object ListDemo02ForAppendAndReturnNewList {
def main(args: Array[String]): Unit = {
val list = List(1, 2, 3, "beijing")
//
val newList = list :+ 6
//
val newList02 = 6 +: list
println(s"list hashcode = ${list.hashCode()}, newList = ${newList.hashCode()}, newList02 = ${newList02.hashCode()}")
println("newList= " + newList)
println("newList02= " + newList02)
}
}
출력
list hashcode = -1049219423, newList = 173175143, newList02 = -1337286218
newList= List(1, 2, 3, beijing, 6)
newList02= List(6, 1, 2, 3, beijing)
object ListDemo02ForAppendAndReturnNewList {
def main(args: Array[String]): Unit = {
val list = List(1, 2, 3, "beijing")
//
val newList = list :+ 6
// :: , .
// ::: ,
val newList03 = 4 :: 5 :: 6 :: 7 :: list :: Nil
println(newList03)
val newList04 = 4 :: 5 :: 6 :: 7 :: list ::: Nil
println(newList04)
}
}
가 변 목록 - 리스트 버퍼
ListBuffer 는 가 변 적 인 list 집합 으로 요 소 를 추가, 삭제 할 수 있 으 며 ListBuffer 는 시퀀스 에 속 합 니 다.
object ListDemo03ForListBuffer {
def main(args: Array[String]): Unit = {
val lst0 = ListBuffer[Int](1, 2, 3)
//
println("lst0(2)=" + lst0(2)) // lst0(2)= 3
for (item
Details
22
List List
val List = scala.collection.immutable.List
에 두 어야 한다. 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.