返回顶部
首页 > 资讯 > 后端开发 > Python >java与scala数组及集合的基本操作对比
  • 266
分享到

java与scala数组及集合的基本操作对比

2024-04-02 19:04:59 266人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录java与Scala数组及集合的操作scala数组基本操作对应java代码scala可变数组ArrayBufferjava 相应 ArrayList操作scala 的数组遍历ja

java与scala数组及集合的操作

这篇博客介绍了scala的数组 + 可变数组的基本使用,及其与java数组的区别

scala数组基本操作


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代码


public static void main(String[] args) {
    int[] nums = new int[10];
 
    String[] s = new String[]{"hello", "world"};
 
    s[0] = "goodbye";
}

scala可变数组ArrayBuffer


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操作


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 的数组遍历


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数组的遍历


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定义


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

scala定义,scala这个实际是个语法糖,调用了apply方法


val a=Array(1,2,5)

源码上

scala


final class Array[T](_length: Int) extends java.io.Serializable with java.lang.Cloneable {
  
  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


 
  // 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的源码~!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java与scala数组及集合的基本操作对比

本文链接: https://lsjlt.com/news/137756.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java与scala数组及集合的基本操作对比
    目录java与scala数组及集合的操作scala数组基本操作对应java代码scala可变数组ArrayBufferjava 相应 ArrayList操作scala 的数组遍历ja...
    99+
    2024-04-02
  • SQL和Python的集合操作对比
    本篇内容主要讲解“SQL和Python的集合操作对比”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL和Python的集合操作对比”吧!集合操作分析式问题通常...
    99+
    2024-04-02
  • Java中数组的常见操作合集
    目录数组的常见操作数组越界异常数组空指针异常数组遍历数组获取最大值元素数组反转数组作为方法参数和返回值数组作为方法参数数组作为方法返回值数组的常见操作 数组越界异常 public s...
    99+
    2024-04-02
  • Java数组的基本操作有哪些
    这篇“Java数组的基本操作有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java数组的基本操作有哪些”文章吧。一、为...
    99+
    2023-06-29
  • java数组及arrays类对数组的操作实例
    数组的初始化有两种方式静态初始化: 初始化时由程序员显示置顶每个数组的初始值,由系统决定数组长度。如:int[] a1 = new int[] {1,2,3,4};...
    99+
    2023-05-31
    数组 arrays
  • Java数组的基本操作方法整理
    目录1. 数组的定义2. 数组的声明、创建3. 内存分析4. 数组的三种初始化5. 数组的四个基本特点6. 数组边界7. 数组的使用7.1 普通For循环7.2 For-Each循环...
    99+
    2024-04-02
  • Java集合Stream流操作的基本使用教程分享
    目录事前准备FilterSortedMapMatchCountReduce总结Java 中可以使用 java.util.Stream 对一个集合(实现了java.util.Colle...
    99+
    2023-02-21
    Java Stream流操作 Java Stream流
  • java集合与数组的区别
    数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同。(推荐学习:java课程)当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现...
    99+
    2020-07-07
    java教程 java
  • Elasticsearch之基本查询及组合查询操作示例
    目录Elasticsearch查询一 基本查询1.1 match查询1.2 term查询1.3 terms查询1.4 控制查询的返回数量(分页)1.5 match_all 查询1.6...
    99+
    2024-04-02
  • PythonNumpy中数组的集合操作详解
    我们知道两个 set 对象之间,可以取交集、并集、差集、对称差集,举个例子: s1 = {1, 2, 3} s2 = {2, 3, 4} """ &: 交集 |: 并集  ...
    99+
    2024-04-02
  • Java WorkBook对Excel的基本操作方法
    1、异常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException   解决方法:使用...
    99+
    2023-05-14
    Java WorkBook Excel操作 Java操作Excel
  • [MySQL]基本数据类型及表的基本操作
    哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库常用的数据类型,数据表的基本操作:创建、删除、修改表,针对修改表的结构进行了讲解,随后是如何向数据表中添加数据,浅浅的提了一下表中数据的查询,更多相关...
    99+
    2023-08-31
    mysql 数据库 服务器 Powered by 金山文档
  • Python 元组和集合的特点及常用操作
    一、元组的特点:1、有序的集合2、通过偏移来取数据3、属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。tuple支持的方法很少>>> dir(tuple) ['__add__', '__class__', '_...
    99+
    2023-01-31
    常用 操作 Python
  • Java基础之JDBC的数据库连接与基本操作
    目录一、JDBC概述二、JDBC操作数据库、操作表步骤三、JDBC体系结构与JDBC API四、注册与加载驱动五、建立连接(Connection)六、使用PreparedStatem...
    99+
    2024-04-02
  • Redis基本数据类型Zset有序集合常用操作
    目录Redis数据类型Zset有序集合一、zadd二、zrange三、zrevrange四、zrangebyscore五、 zrem六、zcard七、zcountRedis数据类型Z...
    99+
    2024-04-02
  • MySQL - mysql服务基本操作以及基本SQL语句与函数
    文章目录 操作mysql客户端与 mysql 服务之间的小九九了解 mysql 基本 SQL 语句语法书写规范SQL分类DDL库表查增 mysql数据类型数值类型字符类型日期...
    99+
    2023-10-23
    mysql sql adb 数据库 carbon
  • 基于pytorch怎么实现Resnet对本地数据集操作
    本文小编为大家详细介绍“基于pytorch怎么实现Resnet对本地数据集操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于pytorch怎么实现Resnet对本地数据集操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-29
  • java集合与数组的区别是什么?
    数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报Runti...
    99+
    2020-05-15
    java基础 java 集合 数组
  • Shell脚本与Java的完美结合:数组和文件操作实战指南!
    Shell脚本和Java是两种非常常用的编程语言,它们各自有着不同的应用场景和优势。然而,在实际项目中,我们可能需要将这两种语言结合起来使用,以充分发挥它们的优势和实现更强大的功能。本文将介绍Shell脚本和Java的完美结合,特别是在数组...
    99+
    2023-10-31
    shell 数组 文件
  • 详解Java集合中的基本数据结构
    集合中三大数据结构 数组 内存地址连续 可以通过下标的成员访问,下标访问的性能高 增删操作有较大的性能消耗(需要动态扩容) 链表(双向链表) ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作