对象数组

集合相关的常用工具类

半城伤御伤魂 提交于 2020-03-11 14:47:21
1. 简介 Java中的集合类既可以当做放其他数据的容器,又可以当做常见的数据结构使用。Java中提供了很多好用的工具类来操作这些集合类。本篇博客就来介绍下常用的集合工具类。集合常用的工具类大体可以分为3类: JDK本身提供的工具类; Guava提供的工具类; Apache common-Collection提供的工具类 2. JDK提供的工具类 主要由下面三个: Arrays Collections Objects Arrays 是操作数组对象的工具类, Collections 是操作集合对象的工具类。 Objects 是操作引用数据类型对象的工具类。 Arrays的常用方法: 普通 排序 : Arrays.sort(int[] a) Arrays.sort(int[] a, int fromIndex, int toIndex) 其他非boolean基础数据类型的数组对象以及实现Comparable接口的类的数组对象均有此方法。 并行排序 :JDK1.8新增。 Arrays.parallelSort(int[] a) Arrays.parallelSort(int[] a, int fromIndex, int toIndex) 其他非boolean基础数据类型的数组对象以及实现Comparable接口的类的数组对象均有此方法。 并行计算 :JDK1.8新增,支持函数式编程

有哪些Java性能优化方法?

醉酒当歌 提交于 2020-03-11 13:35:49
面试官:“有性能优化经验没?” 应聘者:“有一点。” 面试官:“那你们从哪些方面做了优化?” 应聘者:“sql优化、JVM参数调优、JAVA代码性能优化。。” 面试官: “谈谈编写Java代码时有哪些优化方法?" 应聘者:“bala。bala。bala。。” 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 2. 尽量避免随意使用静态变量 当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占有的内存,如 public class A{private static B b = new B();} 此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止。 3. 尽量避免过多过常地创建Java对象 尽量避免在经常调用的方法,循环中new对象,由于系统不仅要花费时间来创建对象

使用ivx的for组件进行循环创建实现排行榜的经验总结

风格不统一 提交于 2020-03-11 12:26:08
之前在可滑动容器那篇文章的结尾里提到了for循环创建组件,今天就正好详细说一说ivx中for容器来实现循环创建。在实际案例中我们其实是经常需要用到这个功能的,因为他可以把结构一致的组件集合复制创建多份而不是真的去一个一个制作出来,可以节省很多时间。以这个排行榜的demo举例,我们可以看出每位玩家的得分卡片结构是一致的,信息类型也都是头像图片,玩家昵称和得分这三项,只是内容不同。现在就来详细说一下这是如何实现的。 2.1.数据库与用户 数据库现在是已经添加好了了三个字段 分值,头像和昵称,并且也已经填入了一些数据,这是前台的对象数组排行榜的数据来源。数据库设置了将每人提交次数限制为1。用户组件则是前台初始化用于微信登录并获取我们的头像昵称和openID,取的这样一个身份后才能生成分数同时也能用于区分不同玩家。 3.2.测试页页面 get your rank按钮的作用是跳转页面,get your score则是随机获取得分并提交到数据库。提交的结果成功了则显示得分。失败则提示用户已经提交过了并直接跳转排行榜页面。 4.3.排行榜页面 简单看一下布局,页面分为两部分,上面是一个文本组件作为标题,下面是一个列容器,就是在这个列容器中我们添加了for循环创建,而循环创建的内容就是这个绝对定位容器和他里面分别展示头像昵称分值的两个文本组件,一个图片组件。 5.4.for循环创建的数据来源

Javascript的console.log()用法

折月煮酒 提交于 2020-03-11 11:58:28
//变量 var i = 'I am a string'; console.log('变量:',i); //数组 var arr = [1,2,3,4,5]; c onsole.log ('数组:',arr); //对象 var obj1 = { key1 : 'value1', key2 : 'value2', key3 : 'value3' }; var obj2 = { key6 : 'value4', key5 : 'value5', key4 : 'value6' }; var obj3 = { key9 : 'value7', key8 : 'value8', key7 : 'value9' }; console.log('对象:',obj1); //对象数组 var objArr1 = [obj1,obj2,obj3]; var objArr2 = [[obj1],[obj2],[obj3]]; console.log('对象数组1:',objArr1); console.log('对象数组1:',objArr2); /* 输出: 变量:I am a string 数组:[1, 2, 3, 4, 5] 对象:Object { key1="value1", key2="value2", key3="value3"} 对象数组1:[Object { key1=

ES6的解构赋值

混江龙づ霸主 提交于 2020-03-10 21:57:03
ES6解构:es6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称之为解构。 解构赋值是对赋值运算符的扩展。 他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。 在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。 解构模型 在解构中,有下面两部分参与: 1.解构的源,解构赋值表达式的右边部分。 2.解构的目标,解构赋值表达式的左边部分。 解构赋值 1.数组的解构赋值 var [a,b,c] = [1,2,3]; console.log(a);//1 console.log(b);//2 console.log(c);//3 //本质上这种写法属于‘模式匹配‘,只要等号两边的模式相同,左边的变量就会被赋予对应的值 let [foo,[bar]] = ["111",["abc"]]; console.log(bar); //abc let [, ,third] = ["foo","bar","baz"]; console.log(third); //baz let [x,y,z] = ['hah']; console.log(y); //undefined //如果解构不成功,变量的值就等于undefined 解构一般有三种情况,完全解构,不完全解构,解构不成功,在上述例子中存在完全解构和解构不成功的例子,下面来看一下不完全解构的例子

Throwable源码详解

安稳与你 提交于 2020-03-10 21:56:47
packagejava.lang; importjava.io.*; /** * *Throwable是所有Error和Exceptiong的父类 *注意它有四个构造函数: *Throwable() *Throwable(String message) *Throwable(Throwable cause) *Throwable(String message, Throwable cause) * */ publicclass Throwable implements Serializable { private static final longserialVersionUID = -3042686055658047285L; /** * Native code saves some indication ofthe stack backtrace in this slot. */ private transient Object backtrace; /** * 描述此异常的信息 */ private String detailMessage; /** * 表示当前异常由那个Throwable引起 * 如果为null表示此异常不是由其他Throwable引起的 * 如果此对象与自己相同,表明此异常的起因对象还没有被初始化 */ private Throwable cause =

ES6解构赋值

落爺英雄遲暮 提交于 2020-03-09 18:47:55
ECMAScript 6 变量的解构赋值 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 var a = 1; var b = 2; var c = 3; ES6允许写成下面这样。 var [a, b, c] = [1, 2, 3]; 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子。 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 let [ , , third] = ["foo", "bar", "baz"]; third // "baz" let [x, , y] = [1, 2, 3]; x // 1 y // 3 let [head, ...tail] = [1, 2, 3, 4]; head // 1 tail // [2, 3, 4] let [x, y, ...z] = ['a']; x // "a" y // undefined z // [] 如果解构不成功,变量的值就等于 undefined 。 var [foo] =

字节跳动面试官这样问我HashMap,我刚好都会!

↘锁芯ラ 提交于 2020-03-09 10:46:05
前言 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚( 请允许我使用一下夸张的修辞手法 )。 于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写互联网技术栈面试相关的文章,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! 所有文章的名字只是我的噱头,我们应该有一颗谦逊的心,所以希望大家怀着空杯心态好好学,一起进步。 正文 一个婀娜多姿,穿着衬衣的小姐姐,拿着一个精致的小笔记本,径直走过来坐在我的面前。 看着眼前这个美丽的女人,心想这不会就是Java基础系列的面试官吧,真香。 不过看样子这么年轻应该问不出什么深度的吧,嘻嘻。(哦?是么😏) 小伙子,听前面的面试官说了,你Redis和消息队列都回答得不错,看来还是有点东西。 美丽迷人的面试官您好,您见笑了,全靠看了敖丙的《吊打面试官》系列,不然我还真的回答不上很多原本的知识盲区,他真的有点东西。 面试官心想:哦,吊打面试官是么,那今天我就让你知道,吊打这两个字怎么写的吧,年轻人啊,提前为你感到惋惜。 嗯嗯小帅比,虽然前面的技术栈没啥太大的瑕疵,不过未来很长的一段时间我会用一期期的基础教你做人的,你要准备好哟! 好了我们开始今天的面试吧,小伙子你了解数据结构中的HashMap么

pandas之Series对象

杀马特。学长 韩版系。学妹 提交于 2020-03-08 21:49:47
pandas库的Series对象用来表示一维数据结构,跟数组类似,但多了一些额外的功能,它的内部结构很简单,由两个相互关联的数组组成(index和values),其中主数组用来存放数据,主数组的每一个元素都有一个与之相关联的标签,这些标签存储在一个Index的数组中. 声明Series对象 构造参数如下: 1 def __init__(self, data=None, index=None, dtype=None, name=None, 2 copy=False, fastpath=False): 1 >>> import pandas as pd 2 >>> s = pd.Series([1, 2, 3, 4]) 3 >>>print(s) 4 0 1 5 1 2 6 2 3 7 3 4 8 dtype: int64 左侧是index(索引),声明Series时,若不指明index,pandas默认使用从0开始依次递增的数值作为index数组。 右侧是values(即封装的数据). 调用构造函数时指定index选项 1 >>> s = pd.Series([1, 2, 3,4], index=['a', 'b', 'c', 'd']) 2 >>> print(s) 3 a 1 4 b 2 5 c 3 6 d 4 7 dtype: int64

Java语言基础JavaScript

不羁岁月 提交于 2020-03-08 16:40:04
JavaScript概述 JavaScript是基于对象和事件驱动的脚本语言,主要应用在客户端。 特点: 1.交互性(它可以做的是信息的动态交互) 2.安全性(不允许直接访问本地硬盘) 3.跨平台性(只要是可以解析Js的浏览器都可以执行,和平台无关) JavaScript与Java的不同 1.Js是Netscape(网景)公司的产品,前身是LiveScript;Java是Sun公司的产品,现在是Oracle公司的产品。 2.Js是基于对象,Java是面向对象。 3.Js只需解释就可以执行,Java需要先编译成字节码文件,再执行。 4.Js是弱类型,Java是强类型(每一种类型都有具体的划分)。 JavaScript与Html的结合方式 1.将JavaScript代码封装到<script>标签中; 2.将JavaScript代码封装到js文件中,并通过<script>标签中的src属性进行引用; <script type="text/javascript" src="demo.js"> </script> 注意:如果<script>标签中使用了src属性,那么该标签中封装的javascript代码不会被执行。所以导入js文件通常都是使用单独的<script>标签。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/