国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - java與scala數組及集合的基本操作對比

java與scala數組及集合的基本操作對比

2022-02-15 15:54端吉 Java教程

這篇文章主要介紹了java與scala數組及集合的基本操作對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java與scala數組及集合的操作

這篇博客介紹了scala的數組 + 可變數組的基本使用,及其與java數組的區別

scala數組基本操作

?
1
2
3
4
5
6
7
8
9
10
def main(args: Array[String]): Unit = {
 
    //new一個大小不變的數組
    val nums = new Array[Int](10) //會被初始化為0
 
    val s = Array("hello", "world") //使用兩個字符串初始化數組(記住,這里不需要new)
 
    s(0) = "good bye" //使用()來訪問數組
 
}

scala數組底層實現就是java數組,上述底層是java.lang.String[]

對應java代碼

?
1
2
3
4
5
6
7
public static void main(String[] args) {
    int[] nums = new int[10];
 
    String[] s = new String[]{"hello", "world"};
 
    s[0] = "goodbye";
}

scala可變數組ArrayBuffer

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def main(args: Array[String]): Unit = {
    val b = ArrayBuffer[Int]() //初始化
    //或者
    //    val b = new ArrayBuffer[Int]
 
    b += 1 //添加一個元素
    b += (1, 2, 3, 4, 5) //添加多個元素在末尾
 
    println(s"b:$b") //b:ArrayBuffer(1, 1, 2, 3, 4, 5)
 
    b ++= Array(8, 1, 34) //一次添加一個數組,注意這里是數組
    println(s"b:$b") //b:ArrayBuffer(1, 1, 2, 3, 4, 5, 8, 1, 34)
 
    b.trimEnd(3) //移除最后三個元素
    println(s"b:$b") //b:ArrayBuffer(1, 1, 2, 3, 4, 5)
}

java 相應 ArrayList操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(1);
 
    List<Integer> list2 = new ArrayList<>();
    list2.add(1);
    list2.add(2);
    list2.add(3);
    list2.add(4);
    list2.add(5);
    list.addAll(list2);
    //java一次要添加1,2,3,4,5就麻煩很多了
    // 當然使用guava的Lists.newArrayList看起來代碼會簡單些
    // 或者使用下面的Arrays.asList也會簡單些,最主要的原因是直接構造一個含有多個數字的list原生的java支持的不好
 
    System.out.println(list); //[1, 1, 2, 3, 4, 5]
 
    list.addAll(Arrays.asList(1, 2, 3, 4, 5));
    System.out.println(list); //[1, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
 
    //java沒有提供原生的,移除最后5個元素的函數
 
    list.add(1,6); //List一次只能添加一個元素
    System.out.println(list); //[1, 6, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
 
    list.remove(1);
    System.out.println(list); //[1, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
 
    //list也不支持,移除第index上的連續n個數字
 
    Object[] array = list.toArray();//轉數組
    Arrays.asList(array); //轉list
}

scala 的數組遍歷

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def main(args: Array[String]): Unit = {
  val a = Array(1, 2, 3, 4, 5)
  for (i <- 0 until a.length) {
    println(s"i:$i value:${a(i)}")
  }
 
  println("-----------")
 
  //遍歷隔一個
  for (i <- 0 until a.length by 2) {
    println(s"i:$i value:${a(i)}")
  }
 
  println("-----------")
 
  //倒著遍歷
  for (i <- 0 until a.length reverse) {
    println(s"i:$i value:${a(i)}")
  }
 
  println("-----------")
 
  //如果不需要index
  for (ele <- a) {
    println(s"value:${ele}")
  }
}

java數組的遍歷

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args) {
    int[] a = new int[]{1, 2, 3, 4, 5};
 
    for (int i = 0; i < a.length; i++) {
        System.out.println("index:" + i + ",value:" + a[i]);
    }
 
    System.out.println("-----------------");
 
    //遍歷隔著2
    for (int i = 0; i < a.length; i += 2) {
        System.out.println("index:" + i + ",value:" + a[i]);
    }
 
    System.out.println("-----------------");
 
    //倒著遍歷
    for (int i = a.length - 1; i >= 0; i--) {
        System.out.println("index:" + i + ",value:" + a[i]);
    }
 
    System.out.println("-----------------");
 
    //不關心index
    for (int value : a) {
        System.out.println("value:" + value);
    }
}

java數組和scala數組遍歷差不多,需要提的一點是,scala的遍歷方式比較統一,無論是Array還是ArrayBuffer,java的list和array就不大一樣(array使用[]取值,list使用get()取值,而scala都是())

對比下就知道,scala提供的可變數組比java的更加強大易用。

scala數組與java數組對比

java數組不是個類,scala數組是類

java定義

?
1
int[] a = new int[]{1, 2, 5};

scala定義,scala這個實際是個語法糖,調用了apply方法

?
1
val a=Array(1,2,5)

源碼上

scala

?
1
2
3
4
5
6
7
8
9
10
final class Array[T](_length: Int) extends java.io.Serializable with java.lang.Cloneable {
  /** The length of the array */
  def length: Int = throw new Error()
  // The element at given index.
  def apply(i: Int): T = throw new Error()
  // Update the element at given index.
  def update(i: Int, x: T) { throw new Error() }
  //Clone the Array.
  override def clone(): Array[T] = throw new Error()
}

針對不同的泛型T,scala有不同的實現,比如針對Int

?
1
2
3
4
5
6
7
8
9
/** Creates an array of `Int` objects */
 // Subject to a compiler optimization in Cleanup, see above.
 def apply(x: Int, xs: Int*): Array[Int] = {
   val array = new Array[Int](xs.length + 1)
   array(0) = x
   var i = 1
   for (x <- xs.iterator) { array(i) = x; i += 1 }
   array
 }

java 源碼

java 找不到Array的源碼~!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://www.jianshu.com/p/2914a94b8022

延伸 · 閱讀

精彩推薦
993
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 免费看一区二区三区 | 嫩草视频在线 | 午夜影院在线 | 一级性视频 | 91精品视频网 | 午夜免费视频 | 欧美视频免费在线 | 亚洲成人av | 毛片免费观看视频 | 欧美在线观看免费观看视频 | 日韩激情一区 | 亚洲一区二区三区四区五区中文 | 中文在线一区二区 | 激情毛片| 自拍视频一区 | 欧美午夜一区 | 亚洲高清第一页 | 日韩视频精品 | 欧美一区二区三区在线看 | 国产一区日韩欧美 | 欧美精品日韩 | 一区视频| 久re在线| 亚洲国产高清高潮精品美女 | 色天天综合久久久久综合片 | 一区二区三区精品视频 | av久久| 欧美精品一二三区 | 最新日韩av | 天堂在线视频 | 午夜视频在线播放 | 亚洲国产精品久久久久 | 木耳av在线 | 日韩在线一区二区 | 免费看亚洲 | 亚洲视频在线观看视频 | www.免费av | 这里只有久久精品 | 久草免费在线视频 | 久久艹色 | 青青国产视频 |