2021年7月12日张近东辞去苏宁董事长并提名张康阳为非独立董事。张近东的黯然退场犹如2017年的王健林。那么在时代更迭的过程中,他们的儿子又会以怎样的姿态立住脚跟?

王思聪和张康阳就像一个班级里的坏学生和好学生,但是成绩都很好,倒是我们这些吃瓜群众成了分母。这个中原因,除了他们有一个好父亲之外,应该还有其他的因素决定着?

         王思聪 张康阳
父亲 王健林 张近东
父亲企业 万达 苏宁
学校 伦敦大学学院 沃顿商学院
性格 张扬 低调
成就 IG创始人 国米主席
出生日期 1988.01.03 1991.12.21
星座 摩羯座  射手座
财富排名(2020) 7 61
绯闻 "国民老公"

可以看出这张表在拼命的寻找两人的联系,似乎除了同为富二代也没啥联系了,可能唯一的联系是奶茶妹妹。王思聪调侃奶茶变抹茶,张康阳与奶茶妹妹同为南外校友,仅此而已。

通过对比可以发现,王思聪和张康阳虽然同属富二代,但却走了截然不同的发展道路。王思聪对外创业,张康阳对内守业。这没有优劣之分,都符合各自现状的最优选择。接下来通过代码演绎这两种情况。

王思聪-ArrayList.subList()

ArrayList的subList()方法是对List截取一段数据,而subList()返回SubList内部类

这就像王健林当初给王思聪5亿投资练手,7年后5亿变63亿,随后成立IG电子竞技俱乐部,这时候的老王已经看不明白了,但是仍大受震撼。很多人会觉得只要有钱,成立一个电子竞技俱乐部也不是什么难事,可现实情况真的这样吗?

以下代码,模拟以上的说法,老王绕过小王成立IG俱乐部,结果抛出异常。

public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("11");list.add("22");list.add("33");list.add("44");List<String> sub = list.subList(1, 4);System.out.println("前"+list);System.out.println("sub后"+sub);System.out.println("开始add------");list.add("IG");System.out.println("前"+list);System.out.println("sub后"+sub);
}

分析原因:

点开ArrayList里的subList方法,返回一个内部类SubList
内部类SubList继承AbstractList,ArrayList也继承AbstractList
又因为AbstractList中有modCount成员变量
因此ArrayList和SubList都各自持有modCount的一个副本

public List<E> subList(int fromIndex, int toIndex) {subListRangeCheck(fromIndex, toIndex, size);return new SubList(this, 0, fromIndex, toIndex);
}private class SubList extends AbstractList<E> implements RandomAccess {private final AbstractList<E> parent;private final int parentOffset;private final int offset;int size;SubList(AbstractList<E> parent,int offset, int fromIndex, int toIndex) {this.parent = parent;this.parentOffset = fromIndex;this.offset = offset + fromIndex;this.size = toIndex - fromIndex;this.modCount = ArrayList.this.modCount;}
}public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {protected transient int modCount = 0;
}

ArrayList方面

当ArrayList进行add的时候 ensureCapacityInternal方法使 modCount自增1

public boolean add(E e) {ensureCapacityInternal(size + 1);  // Increments modCount!!elementData[size++] = e;return true;
}private void ensureCapacityInternal(int minCapacity) {ensureExplicitCapacity(calculateCapacity(elementData, minCapacity));
}private void ensureExplicitCapacity(int minCapacity) {modCount++;if (minCapacity - elementData.length > 0)grow(minCapacity);
}

 

SubList方面

SubList进行打印的时候,默认调用了toString方法,通过一系列的方法调用,最后落到ArrayList的modCount和SubList的modCount对比上,

已知ArrayList的modCount因为add()自增1,SubList的modCount仍保持初始值0,在这里就会抛出ConcurrentModificationException

public String toString() {Iterator<E> it = iterator();
}public Iterator<E> iterator() {return listIterator();
}public ListIterator<E> listIterator(final int index) {checkForComodification();
}private void checkForComodification() {if (ArrayList.this.modCount != this.modCount)throw new ConcurrentModificationException();
}

ArrayList的modCount和SubList的modCount不同,导致异常的抛出。回到话题,小王成长于互联网发展的时代,经受新鲜事物的洗礼,当上一辈的人把电子游戏视为洪水猛兽的时候,小王已然取得了游戏排位赛里的连续胜利。不同的思考方式,注定会做出不一样的事情,只有最符合时代要求的思考才能胜出。对于以上的异常代码,只要把list.add改为sub.list就可以了,让专业的人做专业的事。

    public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("11");list.add("22");list.add("33");list.add("44");List<String> sub = list.subList(1, 4);System.out.println("前"+list);System.out.println("sub后"+sub);System.out.println("开始add------");sub.add("IG");System.out.println("前"+list);System.out.println("sub后"+sub);}

张康阳-Arrays.asList

Arrays的asList方法的作用是数组转list,Arrays的asList方法中,返回值是Arrays的内部类ArrayList

public static <T> List<T> asList(T... a) {return new ArrayList<>(a);
}

打开内部类ArrayList我们看到,ArrayList的有参构造方法的参数是引用类型,这就说明了两点:

1.数值转list,数值内的元素类型应为引用类型

2.转成的list内部仍持有原数组的引用,这样修改原数组的值,仍能在list中体现

private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable
{private final E[] a;ArrayList(E[] array) {a = Objects.requireNonNull(array);}
}

这就像张近东投资国米,张康阳出任国米主席。企业管理是张近东的强项,张康阳可以获得更多的资源,张父对儿子的期望是守业,而观众更希望看到开创事业的惊心动魄,那么根据这种需求进行如下代码模拟:

数组转list后,list通过add方法添加新元素,结果报错

public class TestAsList1 {public static void main(String[] args) {String[] obi = {"11","22"};List<String> arr = Arrays.asList(obi);System.out.println("守业:"+arr.contains("11"));arr.add("新事业");System.out.println("创业:"+arr.contains("新事业"));}}

这是因为内部类ArrayList中没有add方法, 内部类ArrayList只是持有对原数组的引用,可以对原数组已有的元素进行修改,如果需要添加元素,必须在转化之前,对原数组进行扩容添加元素。

张近东创立苏宁以来,以一种开创者的身份冲锋陷阵,对时代红利的精准把握,把苏宁推向了一个又一个的巅峰。任何英雄都是时代的产物,旧时代已去,新时代来临。一位老英雄沿袭一贯的习惯,从+互联网到互联网+,摊子全面铺开,然而有钱任性,紧跟时代不是疯狂的买买买,更重要的是底层思考:有没有给这个时代带来一点美好?从近期疯狂卖卖卖的结果看来,张近东并没有回答好这个问题!在这个背景之下,张康阳的任务就是在已有的产业上更换底层逻辑,就像Arrays.asList,返回的内部类完全可以修改原数组的元素,张康阳必然会做好这种改革。

王思聪与张康阳同为富二代,都在国外知名大学喝过洋墨水,为什么却走上了不同的商业道路?

王思聪学的哲学,张康阳学的商学,按理说性格沉稳,沉思善学的才是哲学生。性格乖张,天马行空的才是商学生。这种身份在他俩这里似乎颠倒了。其实再往前翻一页,王思聪从小在国外长大,张康阳国内长大。与其对比两人商业道路的不同,不如对比国内外意识形态的不同。国内偏向和平,国外偏向竞争。国内注重整体,国外关注个体。国内有同宗同族的家思想,国外有物竞天择的自然观。国内自上而下办大事,国外自下而上求创新。无论国内还是国外都是这个地球上的生命体,人人没有差别,而又互相联系。中国已经将“碳中和”提上了日程表,将会为全人类的前途命运做出巨大贡献。

归根结底,创业难还是守业难已经不重要了,重要的是有没有为这个世界做出一点改变,一点点美好的改变。值得开创的事情,一定也值得守护。

最后一首歌词做结:

《沧海一声笑》

沧海笑 滔滔两岸潮

浮沉随浪记今朝

苍天笑 纷纷世上潮

谁负谁胜出 天知晓

江山笑 烟雨遥

涛浪淘尽红尘俗世知多少

清风笑 竟惹寂寥

豪情还剩了一襟晚照

苍生笑 不再寂寥

豪情仍在痴痴笑笑

ArrayList.subList() VS Arrays.asList :创业更比守业难?相关推荐

  1. java中的asList_java中的Arrays.asList()浅析

    1.Arrays.asList(T..)使用的是静态内部类:ArrayList, (没有定义add和remove等一些方法),而不是java.util.ArrayList /** * 1.测试Arra ...

  2. Arrays.asList 解析

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨cxuan 来源丨Java建设者 说明 asL ...

  3. 后端:请谨慎使用Arrays.asList、ArrayList的subList

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asL ...

  4. 使用Arrays.asList、ArrayList的subList时,你有踩过这些坑吗?

    前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 作者:申城异乡人, 图文编辑:xj 来源:https://blog.csdn.net/zwwhnly/article/details/10 ...

  5. 请谨慎使用Arrays.asList、ArrayList的subList

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asL ...

  6. 在项目中用了Arrays.asList、ArrayList的subList,被老大公开批评

    推荐阅读:这几个已经淘汰的Java技术,请不要在继续学了!!! 使用Arrays.asList的注意事项 1.可能会踩的坑 先来看下Arrays.asList的使用: List<Integer& ...

  7. 在项目中使用Arrays.asList、ArrayList的subList,被老大点名批评~

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asL ...

  8. java 集合数组初始化_Java用Arrays.asList初始化ArrayList实例方法

    Java用Arrays.asList初始化ArrayList实例方法 发布于 2020-2-29| 复制链接 在本篇文章里小妖给大家分享的是关于Java中使用Arrays.asList初始化Array ...

  9. Arrays.asList()返回的ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类

    测试代码: package array;import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; ...

最新文章

  1. 深度剖析数据在内存中的存储2——浮点数数在内存中的存储
  2. 如何用hover写出顺畅的动态效果
  3. 2.3 快速搭建你的第一个系统,并进行迭代-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  4. html转markdown_markdown转html带目录和图片压缩
  5. 台式电脑如何截屏_电脑如何安装安卓系统 台式机装安卓系统教程
  6. 雷蛇鼠标安全漏洞 装上就能获得管理员权限
  7. shell编程-实现线性筛
  8. 对数几率回归 —— Logistic Regression
  9. Laravel用post提交表单常见的两个错误
  10. (function($){...})(jQuery) 含义
  11. spring+hibernate:在applicationCOntext.XML中配置C3P0参数说明
  12. Java中什么是JAP之hibernate-mvc修改功能-Springmvc
  13. 【安装教程】 【Visio2019】(附带安装包下载)
  14. gd动态曲线 php_php顶用GD绘制折线图
  15. 值得收藏-50个免费可商用图库
  16. android机器人方向,Android横版过关类游戏推荐《机器人大挑战》
  17. AMD CPU 开启Android Studio emulator虚拟机
  18. 云帮平台的设计架构详解
  19. html战棋游戏战棋游戏,六款不可错过的战棋游戏 将领才华始于纸上谈兵
  20. mysql bigint 长度最大多少位_bigint 有多少位

热门文章

  1. 【玩转Linux】Linux输入子系统简介
  2. Macports install
  3. “诚迈杯”南邮校赛邀请赛
  4. 经典检索模型-广告检索类似可参考
  5. I. 电视遥控(静态+友元)
  6. 小程序自动化之minium
  7. Excel随机数相关
  8. 使用 XSLT 显示 XML
  9. java csp_Java程序员CSP,第2部分
  10. 实训四#4.1霍格沃茨找零