
java
卜可
每个人的成长路径都不同,但无一不是兴趣与使命驱动
展开
-
java8stream操作:从集合中获取符合条件的元素
List<Student> students = new ArrayList<>(); students.add(new Student(1,"张三",90)); students.add(new Student(2,"李四",60)); students.add(new Student(3,"王五",30)); ...原创 2018-11-22 14:19:09 · 69128 阅读 · 8 评论 -
java8stream操作:将集合转化为集合元素中属性为key的
List&lt;Student&gt; students = new ArrayList&lt;&gt;(); students.add(new Student(1,"张三",90)); students.add(new Student(2,"李四",90)); students.add(new St原创 2018-11-22 13:50:35 · 12883 阅读 · 3 评论 -
POJO转换类工具类
javaweb项目中,少不了需要领域类之间的转换,比如po类转换为dto。 这个功能很多第三方工具类都有提供,比如比如org.apache.commons包中的BeanUtils。本文也提供了一个pojo的转换工具类,经测算,该工具类的运行效率比BeanUtils快20倍。下文是工具类代码:/** * 实体类转化工具类 * @author 漆可 * @date 2017年12月原创 2017-12-27 17:54:58 · 4059 阅读 · 1 评论 -
java:判断数组中是否包含某元素
方法一 private static boolean isContainKey(String[] keys, String targetValue) { if (keys == null || keys.length == 0) { return false; } for (String str :原创 2017-11-24 09:40:39 · 38420 阅读 · 6 评论 -
Java:将map中的key转化为小写
public static Map<String, Object> transformUpperCase(Map<String, Object> orgMap) { Map<String, Object> resultMap = new HashMap<>(); if (orgMap == null...原创 2018-02-09 11:28:34 · 20182 阅读 · 0 评论 -
java:获取异常的堆栈信息
做java开发的时候,经常会遇到代码抛异常后,需要把异常信息保存到数据库或者上传到云服务器做cache分析。这时候就需要获取异常的堆栈信息(详细错误信息)。有的人用e.getMessage()来获取异常信息,但是这样获取到的信息内容并不全,而且有时候为空。我们可以用下面方法来获取。 public static String getStackTrace(Throwable throwable)原创 2017-08-15 09:55:16 · 30811 阅读 · 2 评论 -
如何快速判断一个数字是否是2的n次方
public boolean check(int m){ if(n < 1) return false; int n = m & m(m-1); return n == 0;}定义2的n次方的数字m,我们知道m二进制为0001,0010,0100……这样的,而m-1的二进制为0000,0001,0011……这样的。可见m&(m-1)的运算结果...原创 2018-04-09 22:47:23 · 8064 阅读 · 0 评论 -
java8stream操作:将集合根据元素的某个属性分组求统计数据
student类:public class Student { private int id; private String name; private int score; public Student(int id, String name, int score) { this.id = id; this.name = na...原创 2018-11-22 14:01:47 · 34916 阅读 · 0 评论 -
java虚拟机内存分配方式
在JVM中,内存分配方式分为俩种:指针碰撞空闲列表1、指针碰撞如果内存是完整的,空闲的内存存放在一边,用过的内存放在另外一边,中间有个指针作为分界点的指示器。需要分配新内存的时候,指针往空闲内存那边挪动一段与新指针大一小相等的距离。这种分配方式就叫指针碰撞。2、空闲列表如果java堆中的空闲内存是碎片化不完整的,已使用内存与空闲指针存在交叉。虚拟机中有一利列表记录...原创 2018-03-06 17:25:33 · 1056 阅读 · 0 评论 -
java常见排序算法
java中常见的7种排序算法冒泡(Bubble)排序——相邻交换 选择排序——每次最小/大排在相应的位置 插入排序——将下一个插入已排好的序列中 壳(Shell)排序——缩小增量 归并排序 快速排序 1、冒泡(Bubble)排序 void BubbleSortArray() { for(int i=1;i<n;i++) { ...原创 2018-03-12 10:28:04 · 443 阅读 · 0 评论 -
2017-11-20
–原创 2017-11-20 09:31:09 · 700 阅读 · 0 评论 -
解决Gson解析数据用map接收时int自动转化为double问题
Gson可以将json字符串转换成map, 但是在转成map时, 原json字符串中的int , long型的数字会默认被转换成double类型 , 导致数字会多一个小数点 , 如 1 会转成 1.0。我们可以用自定义TypeAdapter替代Gson默认的adapter解决: Gson gson = new GsonBuilder().registerTypeAdapter(new原创 2017-12-12 14:10:51 · 13225 阅读 · 9 评论 -
java:if (i == 1)和if (1 == i)有区别吗?
经常看到类似于if (1== i)的代码,其实在java中它和if (i == 1)是没有区别的,而且后者阅读性更强些(除非你喜欢从右往左阅读)。那么为什么有的人喜欢用表达式if (1== i)呢?这得从C/C++说起,在C/C++中,”if “条件判断条件成立,是以0与非0为基准的,0表示false,非0表示true。如果有这么一段代码:int i = 2;if (i == 1)在如上代码中,2原创 2017-11-30 14:53:05 · 10918 阅读 · 5 评论 -
Java property 的加载读取
方法一Properties properties = new Properties(); InputStream stream = PropertiesUtil.class.getClassLoader().getResourceAsStream("setting.properties"); properties.load(stream); 方法二public static URL get原创 2017-07-10 16:50:51 · 2974 阅读 · 0 评论 -
java:竟然有会生成固定文字“hello world”的随机数
下面代码随机生成的文字竟然是固定内容的”hello world”。System.out.println(randomString(-229985452) + " " + randomString(-147909649));public static String randomString(int i){ Random ran = new Random(i); StringBuilder原创 2017-08-10 17:14:34 · 1460 阅读 · 0 评论 -
java填坑:三元操作符的类型不一致导致的问题
三元操作符是if-else的简化写法,我们在项目经常能用到他,但是有时候也容易出现问题,我们先看看下面这段代码: int i = 80; String str1 = String.valueOf(i < 100 ? 90 : 100); String str2 = String.valueOf(i < 100 ? 90 : 100.0); System.out.print原创 2017-08-10 17:47:11 · 3067 阅读 · 0 评论 -
wait()和sleep()的区别
线程在wait 后,可以被另一个拥有相同线程锁对象的线程通过调用notify方法唤醒,而 sleep不行。wait和notify能正常执行的条件是(否则会抛异常):多个线程的代码,都包在synchronized块中,并且synchronized锁的对象需要是同一个。简而言之,多线程。当线程调用了wait方法后,就会进入等待状态,需要另外一个持有同一个线程锁的线程通过notify通知强锁。如果有多个线原创 2017-08-11 17:00:48 · 3143 阅读 · 0 评论 -
java中那些关于String的面试题
1、String是基本数据类型吗?String是java lang包下的一个类,不像基本数据类型int long等。 String是引用数据类型,不是基本数据类型。2、String是可变的吗?所谓不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值。在java中,所有基本类型的包装类,如Integer和Long类,都是不可变类,java.lang.String也是不可变类,虽然他不是基本类原创 2017-08-18 18:20:01 · 1715 阅读 · 0 评论 -
Java基础面试题 (一)
1、面向对象的三个特征封装,继承,多态。这个应该是人人皆知,有时候也会加上抽象。2、多态的好处允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:可替换性:多态对已存在代码具有可替换性可扩充性:增加新的子类不影响已经存在的类结构接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的原创 2017-07-27 18:35:24 · 1200 阅读 · 2 评论 -
java面试题:Maven 和 ANT 有什么区别?
虽然两者功能上都是构建工具,都用于创建 Java 应用,但是 Maven 做的事情更多,在基于“约定优于配置”的概念下,提供标准的Java 项目结构,同时能为应用自动管理依赖(应用中所依赖的 JAR 文件),具体差异见下文。Ant仅仅是软件构建工具,而Maven的定位是软件项目管理和理解工具。Maven除了具备Ant的功能外,有以下主要的功能: 使用Project Object Model原创 2017-08-23 09:46:20 · 3960 阅读 · 0 评论 -
java:retainAll获取俩个自定义实体对象集合的重叠数据
需求有这么一个需求,学校举办了一场运动会,要求获取同时参加了田径和跳远项目的学生名单。技术实现为了更直观描述技术实现,先看看项目代码初始代码:代表学生对象的实体类Student(id为唯一标识码):public class Student{ // 学生姓名 private String name; // 学号 private String id; //省略ge原创 2017-10-26 17:42:27 · 6611 阅读 · 1 评论 -
java遍历Map效率最高的方式
遍历Map的方式有很多,通常场景下我们需要的是遍历Map中的Key和Value,那么推荐使用的、效率最高的方式是:public static void main(String args...){ HashMap<String, String> hm = new HashMap<String, String>(); hm.put("111", "222"); Set<Map.E原创 2017-11-30 14:57:41 · 16051 阅读 · 7 评论 -
java中foreach循环原理
一般,我们使用会用foreach取代for循环进行集合的遍历操作。public static void main(String[] args){ List<String> list = new ArrayList<String>(); list.add("111"); list.add("222"); for (String str : list) {原创 2017-11-30 15:28:53 · 1933 阅读 · 0 评论 -
类加载器:ClassLoader与Class的区别
1、类加载器java字节码(类)的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验、解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制。JVM中用来完成上述功能的具体实现就是类加载器,类加载器读取.class字节码文件将其转换成java.lang.Class类的一个实例。每个实例表示一个java类。通过该实例的newInstan原创 2017-07-10 16:47:33 · 3607 阅读 · 0 评论