当前位置: 首页 > news >正文

常用来做网站的首页seo优化常识

常用来做网站的首页,seo优化常识,做网页做网站的技术人才,做网站与做游戏那个好我们要遍历一个数组、一个列表,经常会用到kotlin的 for in 语法,但是 for in 是不是有序的呢?forEach是不是有序的呢?这就需要看一下它们的本质了。 数组的 for in // 调用: val arr arrayOf(1, 2, 3) for (ele in …

我们要遍历一个数组、一个列表,经常会用到kotlin的 for in 语法,但是 for in 是不是有序的呢?forEach是不是有序的呢?这就需要看一下它们的本质了。

数组的 for in

// 调用:
val arr = arrayOf(1, 2, 3)
for (ele in arr) {println(ele)
}

反编译成Java是个什么东西呢?

Integer[] arr = new Integer[]{1, 2, 3};
Integer[] var4 = arr;
int var5 = arr.length;for(int var3 = 0; var3 < var5; ++var3) {int ele = var4[var3];System.out.println(ele);
}

总结:从Java代码可以看出,实际就是一个普通的for循环,是从下标0开始遍历到结束的,所以是有序的。

列表的 for in

// 调用:
val list = listOf(1, 2, 3)
for (ele in list) {println(ele)
}

反编译成Java:

List list = CollectionsKt.listOf(new Integer[]{1, 2, 3});
Iterator var3 = list.iterator();while(var3.hasNext()) {int ele = ((Number)var3.next()).intValue();System.out.println(ele);
}

可以看出列表的for in是通过iterator实现的,和数组不一样,那这个iterator遍历是否是有序的呢?首先我们要知道这个iterator怎么来的:

// iterator 是通过调用 list.iterator() 得到的,那么这个list又是什么呢?
Iterator var3 = list.iterator();// list
List list = CollectionsKt.listOf(new Integer[]{1, 2, 3});// list是通过数组elements.asList()得到的
public fun <T> listOf(vararg elements: T): List<T> = if (elements.size > 0) elements.asList() else emptyList()// 这里有个expect,找到对应的actual
public expect fun <T> Array<out T>.asList(): List<T>// 对应的actual
public actual fun <T> Array<out T>.asList(): List<T> {return ArraysUtilJVM.asList(this)
}// 最终调用了Arrays.asList(array)
class ArraysUtilJVM {static <T> List<T> asList(T[] array) {return Arrays.asList(array);}
}public class Arrays {// 从这里看到最终拿到的list是 Arrays 类中的 ArrayList// 然后我们找到里面的 iterator() 方法public static <T> List<T> asList(T... a) {return new ArrayList<>(a);}private static class ArrayList<E> extends AbstractList<E>implements RandomAccess, java.io.Serializable{private final E[] a;@Overridepublic Iterator<E> iterator() {// 最终得到的iterator是ArrayItr// 这里的a是一个数组,也就是我们一开始传进来的1,2,3return new ArrayItr<>(a);}}private static class ArrayItr<E> implements Iterator<E> {private int cursor;private final E[] a;ArrayItr(E[] a) {this.a = a;}@Overridepublic boolean hasNext() {return cursor < a.length;}@Overridepublic E next() {int i = cursor;if (i >= a.length) {throw new NoSuchElementException();}cursor = i + 1;return a[i];}}
}

总结:列表的for in是通过iterator实现的,这个iterator是ArrayItr,从里面的next()方法可以看出,这也是有序的,从cursor开始,cursor默认是0,也就是从下标0开始遍历。
注:这里只是分析了Arrays.ArrayList的iterator,具体的集合类需要具体分析,比如ArrayList、LinkedList等,不过从正常思维来看,iterator是一个迭代器,就应该有序的把数据一个一个丢出来。

数组的 forEach

// 调用:
val arr = arrayOf(1, 2, 3)
arr.forEach {println(it)
}// 点进去forEach看:
// 其实也是调用了for in,所以也是有序的。
public inline fun <T> Array<out T>.forEach(action: (T) -> Unit): Unit {for (element in this) action(element)
}

列表的 forEach

// 调用:
val list = listOf(1, 2, 3)
list.forEach {println(it)
}// 点进去forEach看:
// 其实也是调用了for in,所以也是有序的。
public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit {for (element in this) action(element)
}
http://www.ds6.com.cn/news/14981.html

相关文章:

  • 如何增加网站外链爱站工具包官网下载
  • 酒业网站模板下载网络销售的好处和意义
  • 温州疫情最新消息seo 的原理和作用
  • 网络促销的方法有哪些搜索引擎优化效果
  • java web做网站seo sem论坛
  • 政府司法网站建设报告申请广告信息发布平台
  • 兼职做Ppt代抄论文的网站谷歌推广培训
  • 桂林北站防疫电话国家优化防控措施
  • 通州顺德网站建设河源seo
  • 网站标题关键词描述我要下载百度
  • 上海建网站工作室东莞网站营销推广
  • 中国最新光刻机常用的seo查询工具
  • 简述网络营销的推广方法aso优化哪家好
  • dz网站制作网站建设需要多少钱?
  • 政府门户网站集约化建设的探索seo关键词是什么
  • iis网站重定向设置中国足彩网竞彩推荐
  • wordpress优秀案例排名优化培训
  • 余姚有专业做网站的吗安卓优化大师官方版
  • 神华科技网站建设宁波seo外包服务平台
  • 开发网站广州济南网站制作公司
  • 怎么自己制作图片搜索引擎seo优化怎么做
  • 的网站建立百度网络营销中心app
  • 公司的网站建设价格低软文发布平台排名
  • 旅游网站开发景点数据库蚌埠seo外包
  • 做网站服务器 用mac pro 怎么样新冠咳嗽怎么办
  • 网站邮箱配置太原seo外包公司
  • 如何用asp.net做网站如何优化关键词的方法
  • 企业网站建设的策略启动互联全网营销推广
  • 《电子商务网站开发与管理》百度seo排名规则
  • java做的新闻网站百度一下浏览器下载安装