
java
vincent_nkcs
nkcs coder
展开
-
java实现八数码
两种方式实现: 1. BFS 2. A*BFS广度优先搜索算法,图论的基本算法,在寻找结果过程中,优先遍历当前节点的所有子节点,通常搭配队列使用。当图节点过多时,队列可能存在OOM风险。为了打印搜索过程,使用了数组记录。A*路径搜索算法。保存当前状态到结果状态的启发式评估代价和初始状态到当前状态的待见,选择代价低的状态作为下一步。对于代价相同的情形,利用回溯进行路径再搜索。用Node中...原创 2019-11-24 15:37:43 · 2125 阅读 · 3 评论 -
Java回溯实现数独
回溯算法一般用于需要穷举中间状态以找到最终结果状态的情形,通常搭配DFS使用,假设中间状态成立,推出结果后判断是否符合结果,否则将状态复原,寻找下一个可能结果。其实就是DFS+回溯,贴一下代码。环境Language: Java SE(jdk 1.8.0_211)JVM: Java HotSpot 64-Bit Server VM)IDE:IntelliJ IDEA(2019.1.4)...原创 2019-11-24 15:32:55 · 459 阅读 · 0 评论 -
java多层map初始化
因为聚合需求,一开始构造了一个四层map,由于放入实例前需要先判断前面的map存不存在,如果不存在则要new新的map,并把数据放进去,一开始直接if else写写了两百多行。cr之后觉得很丑陋,就寻找简单的方法去重写。首先将map结构重新规划,将一些固定的值从map中去除,将中间两层的键用连接符合并,在输出时再做拆分,这样四层的map就简化成了两层。针对实例化的问题,使用如下代码:Map&...原创 2019-11-05 17:26:01 · 1974 阅读 · 1 评论 -
jni引用so库
复习java的时候复习到了jni,书上只是简单列出来了五点步骤,实际上不自己动手的话不理解,刚好有项目需要通过java的jni调用c的sdk,因而自己动手尝试了一下。编写java类,编译成class和h文件编写时需要声明为native方法,然后System.load()或System.loadLibrary()加载so库,后面调用方法即可。由于项目规模比较大,因而先用maven生成jar...原创 2019-11-04 20:43:04 · 1119 阅读 · 0 评论 -
java中对象的引用
java.lang.ref 包提供了SoftReference、PhantomReference和WeakReference三种对象引用方式。一 强引用(StrongReference)当一个对象被一个或一个以上的引用变量引用时,处于可达状态,不可能被系统垃圾回收机制回收。二 软引用(SoftReference)当一个对象只有软引用时,有可能被垃圾回收机制回收。当系统内存空间足够时,不会被...原创 2019-10-19 18:57:14 · 327 阅读 · 0 评论 -
java中Lambda表达式支持的方法引用和构造器引用
一 引用类方法示例:类名::类方法说明:函数式接口中被实现方法的全部参数传给该类方法作为参数Lambda表达式:(a,b,...) -> 类名.类方法(a,b,...) / 类名::类方法 (只有一行调用类方法代码时)@FunctionalInterface interface Converter { Integer convert(String form);}pub...原创 2019-10-18 22:03:36 · 392 阅读 · 0 评论