java与scala数组及集合基本操作对比
这篇博客介绍了scala的数组 + 可变数组的基本使用,及其与java数组的区别(博客中代码参照 快学scala)
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的更加强大易用

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
深入了解SpringCloud Hystrix
雪崩效应即在多个服务节点当中,如果有一个服务不可用而这个不可用的服务导致整个应用资源都耗在这里,进而影响整个系统的崩溃。在分布式环境中,不可避免地会出现雪崩效应。Hystrix是一个netflix实现了 circuit breaker pattern模式的库,它通过处理并发量,降低延迟故障和优雅的容错处理来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,停止跨服务的级联故障和优雅的降级来提高系统的整体弹性。 5.2.1 为什么需要Hystrix hystrix的作用: 通过第三方客户端库访问依赖项(通常是通过网络),以保护和控制延迟和故障。 防止雪崩效应 当遇到的问题 快速失败并优雅的恢复 有效的进行监控与警告 5.2.2 防止雪崩效应 Hystrix采用了如下方式来防止雪崩效应: 在HystrixCommand或HystrixObservableCommand对象中封装对外部系统(或“依赖项”)的所有调用,该对象通常在单独的线程中执行(这是命令模式的一个示例)。 为每个依赖项维护一个小的线程池(或信号量); 如果它被填满了,发送给该依赖项的请求将立即被拒绝...
-
下一篇
基于numpy的前馈神经网络(feedforward neural network)
***代码部分可以直接通过Jupyter Notebook来查看 这几天在上Andrew Ng教授开的Coursera系列课程Deep Learning,总觉得光是看视频和做作业还不够,还是得自己动手写写代码,亲自实现课程里提到的算法内容,于是便有了这篇博客,作为自己入门深度学习的里程碑吧。 前馈神经网络 机器学习有两个基本问题,一是回归,二是分类,神经网络大多用于解决分类问题,前馈神经网络(feedforward neural network)是整个神经网络家族中较为常见和较为基础的一种,如下图右上角的DFF所示。图片来源是Cheat Sheets for AI, Neural Networks, Machine Learning, Deep Learning & Big Data。 神经网络中的基本元素是神经元,每层都有一定数量的神经元,神经元组合的多样性决定了神经网络的丰富性。下面是一个简单的前馈神经网络,总共有三层,从左到右分别是输入层、隐层和输出层,输入层的x1和x2表示这个样本只有两个特征(自变量),因为输入层通常不计入内,所以这是一个两层的神经网络,第一层有4个神...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL数据库在高并发下的优化方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果