自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 Map内对象的排序

最近在学习中碰到了一个问题,一个HashMap中存储了Person对象,Person对象有name和age两个属性,需要我们按照Person的年龄属性从高到低来对其进行排序,并且键值对不能拆开,然后我就去试了一下发现HashMap对象的内容是无序的,无法在不拆散键值对的情况下对其进行排序,然后我找了一下HashMap的子类发现有一个LinkedHashMap对象是有序的,可以用这个对它进行排序,下边是实现步骤 Person person = new Person("zs", 15); Person .

2020-06-27 15:32:04 865

原创 关于java中String,StringBuffer,StringBuilder的区别以及StringBuffer,StringBuilder的安全性问题

1、首先是String和后两者的区别,这三者都是字符串操作,但是String中的value[]有一个final进行修饰,相当于其是不可变的,如果我们想要更改它的值那就是要在堆内存中再开辟出一个空间用来存储这个新的值,而原来的值还占着内存,这样就会造成大量的内存被占用,这个方面通过new String();创建字符串对象也会造成大量的内存被占用,而StringBuilder和StringBuffer都是继承了AbstractStringBuilder这个虚拟的类,里边的value[]没有用final进行修饰.

2020-06-26 17:54:02 132

原创 关于AndroidIOC的依赖注入简单实现

IOC全称是Inversion of Control,也就是反转控制,DI只是其一种实现方式,我们常见的ButterKnife和ViewUtils都实现了依赖注入,,我们用的比较多的就是利用依赖注入给控件注入id,在这里就实现一个简单的给控件注入ID和绑定点击事件的例子,来帮助理解DI的大致思想。 首先我们定义一个注解ViewInject,用来给控件绑定id,再定义一个注解OcClick用来给按钮绑定点击事件。 @Target(ElementType.FIELD) @Retention(Retent

2020-06-17 22:51:47 184

原创 利用handler实现主线程向子线程中发送消息

既然我们知道了handler的工作原理,那么假设我们将子线程和主线程调换位置,在子线程中执行Looper.prepare()方法和Looper.loop()方法,以实现主线程给子线程发送消息。这是测试项目的简单界面点击上边的按钮子线程给主线程发消息,点击下边的按钮主线程给子线程发消息。首先实现子线程发消息的 final Handler handler = new Handler(){ @Override public void handleMessage(Message msg){ Log.d(“MainT

2020-06-13 18:31:18 944

原创 个人关于Android中handler执行过程的理解

Handler在Android极为重要的,因为Android要求只能在主线程里边更新UI界面,所以其主要实现子线程给主线程发送信息。 但是在创建Handler对象的时候,Android底层究竟执行了什么内容,还是要去仔细看看的。 首先在主线程中创建Handler对象Handler handler = new Handler(); 在这个同时,内部还执行了Looper.prepare(); Loop.loop();两个方法,而在子线程中我们仅仅是使用handler的引用,使用sendMessage()方法来

2020-06-13 14:53:17 359

原创 JAVA线程池

Java线程池 线程池是java重要的一部分,在开发过程中有着极其重要的作用。控制线程池中线程的个数也是极其重要的。 一般我们会用synchronized来实现,但是这样同一时刻就只能一个线程处于方法或者同步块中。如果我们想让任意几个线程处于线程池中我们可以使用Semaphore或者Executor来实现。 Semaphore实现方法: 首先我们初始化一个Semaphore对象 Semaphore semaphore = new Semaphore(5);//即为我们允许的同时存在的线程的个数,当我们开启一

2020-06-12 00:45:34 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除