![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java JDK
灵湖映北辰
这个作者很懒,什么都没留下…
展开
-
Java 使用ReplaceAll 做正则转换
去除小数点后0doubleStr=doubleStr.replaceAll("\\.+0+?$", "");原创 2021-12-30 10:10:51 · 474 阅读 · 0 评论 -
将list按照下标分组为若干个组
需求需求如下,单个页面只能显示4组(或者n组值), 如果有12个对象,那么需要有3个页面对这个list进行展示。同样的我们希望前端可以只做一个页面,循环外层(这里假设3次),然后再循环四次即可把整个数据展示出来。结构变化[1, 2, 3, 4, 5, 6, 7, 8,9, 10] 将这一整个list转为下述的结构,4个一组 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]方法如下 public static List<List..原创 2021-11-11 19:12:46 · 1066 阅读 · 0 评论 -
Stream入门(4)----skip、limit、map、flatMap
skip()用来做对List中元素的跳过,即如果为5,则跳过前5个元素,如果跳过元素超过list中元素个数,则返回一个空的list对象 List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 6, 7, 7, 1); List<Integer> result=list; result = list.stream().skip(5).collect(toList()); .原创 2021-10-02 21:41:51 · 595 阅读 · 0 评论 -
多线程2 一些概念的区别
yield和sleep在JDK1.5以前的版本中yield的方法事实上是调用了sleep(0),但是它们之间存在着本质的区别,具体如下1.sleep会导致当前线程暂停指定的时间,没有CPU时间偏的消耗。2.yield只是对CPU调度器的一个提示,如果CPU调度器没有忽略这个提示,它会导致 线程上下文的切换。3.sleep会使线程短暂block,会在给定的时间内释放CPU资源。4.yield会使Running状态的Thread进入Runnable状态,(如果CPU调度器没有忽略 这个提示)5.s原创 2021-03-17 23:38:22 · 68 阅读 · 0 评论 -
去掉String后缀字段
方法如下,调用该静态方法即可public static String trimTrailingString(String str,String trailingString){ if(str!=null){ return str; }else{ StringBuilder sb=new StringBuilder(str); while(sb.length()>0&&sb.toString().endsWith(trailingString)){ sb.dele原创 2021-03-17 16:56:17 · 787 阅读 · 0 评论 -
JAVA网络编程---基本网络概念
网络不通层的协议Internet的标准TCP/IP四层模型:应用层、传输层、网际层、主机网络层90%的情况下,java代码都将在应用层工作,只需要与传输层对话OSI Open System Interconnection Reference Model1.将主机网络层分为数据链路层和物理层2.在应用层和传输层之间插入了标识层和会话层传输层上有两个协议1.TCP Transmission Control Protocol 开销很高的协议,支持对丢失或破坏数据进行重传,并按照发送时的顺序进行传原创 2021-02-26 17:56:15 · 111 阅读 · 0 评论 -
java8新特性----未完待续
1.interface 可以提供静态方法及default 方法 其中default方法可以是private的,以方便其他default方法进行调用例如:List 中的 default 方法 streamdefault Stream<E> stream() { return StreamSupport.stream(spliterator(), false); }例如:Comparator接口中有相当多的静态方法如: public static <T,原创 2020-11-21 16:32:09 · 66 阅读 · 0 评论 -
设计模式----- 模板方法
概述在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如:一个人每天会起床、吃饭、做事、睡觉等,其中“做事”的内容每天可能不同。我们把这些规定了流程或格式的实例定义成模板,允许使用者根据自己的需求去更新它,例如,简历模板、论文模板、Word 中模板文件等。定义定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算原创 2020-11-19 23:48:38 · 105 阅读 · 0 评论 -
多线程1
多线程的创建继承Thread并覆写run方法class ThreadTest extends Thread{ @Override public void run() { System.out.println("线程启动!"); }}启动线程 ThreadTest test=new ThreadTest(); test.start();实现Runnable接口class RunnableTest implements Runnable{ @原创 2020-10-25 12:07:45 · 106 阅读 · 0 评论 -
多线程(1)
理解多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单位,线程是进程的基础之上进行进一步的划分。所谓多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程,这些线程可以同时存在,同时运行,一个进程可能包含多个同时执行的线程。Java中线程实现的方式1 实现runnable接口class MyThread implements Runnable{ // 实现Runnable接口,作为线程的实现类 public vo原创 2020-08-31 17:14:03 · 90 阅读 · 0 评论 -
Stream入门(3)----filter、distinct、sorted
1.1 filter介绍用来对stream中的元素进行过滤的方法源码中是这样定义的Stream<T> filter(Predicate<? super T> predicate);它需要传入一个Predicate实现类 即public interface Predicate<T> { boolean test(T t); }即传入一个泛型t,返回一个boolean而filter方法则通过对test方法返回的boolean进行判断,以确定是原创 2020-08-04 19:03:10 · 1216 阅读 · 0 评论 -
使用dom解析xml到实体bean,利用反射机制,万物皆可用
package com.htht.project.task.util;import com.htht.project.task.bean.Product;import com.htht.project.task.bean.TaskXml;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.pars原创 2020-08-03 15:32:02 · 224 阅读 · 0 评论 -
原创 Stream入门(2)----创建Strean
1 通过collections进行创建 List<String> list = Arrays.asList("hello", "alex", "wangwenjun", "world", "stream"); list.stream().forEach(System.out::print);2 通过values进行创建 Stream.of("hello", "alex", "wangwenjun", "world", "stream").forEach(Sys原创 2020-07-19 16:54:44 · 378 阅读 · 0 评论 -
Stream入门(1)
写在前面学习Stream,首先需要了解lambda表达式概况Stream API是对集合对象功能的增强,它是多线程的,能够更加快速的完成对集合的排序、过滤、limit、统计等各种操作。简单例子构建list集以下所有操作均对应该list进行操作 List<Dish> menu = Arrays.asList( new Dish("pork", false, 800, Dish.Type.MEAT), new原创 2020-07-14 09:03:29 · 258 阅读 · 0 评论 -
java8函数推导
写在前面-函数推导必要条件 需要静态方法1 consumer接口test定义一个consumer接口的使用方法private static <T> void useConsumer(Consumer<T> consumer, T t) { consumer.accept(t); consumer.accept(t); }方法推导过程 Consumer<String> consumer = (s) -> S原创 2020-07-07 09:02:00 · 251 阅读 · 0 评论 -
自定义Lambada函数接口
使用的是Function接口,这个接口,可以自定义传入参数与返回参数其源码如下@FunctionalInterfacepublic interface Function<T, R> { /** * Applies this function to the given argument. * * @param t the function argument * @return the function result */ R原创 2020-06-13 21:00:40 · 255 阅读 · 0 评论 -
list根据属性排序
拿到一个list后,若需要按某个属性进行重新排序,那么其原理如下。使用List中的sort方法即可,其源码如下: default void sort(Comparator<? super E> c) { Object[] a = this.toArray(); Arrays.sort(a, (Comparator) c); ListIterator<E> i = this.listIterator(); for原创 2020-06-13 20:35:09 · 1248 阅读 · 0 评论 -
Java 之 assert (断言)
为什么使用断言?断言是为了方便调试程序,并不是发布程序的组成部分注意一般来说事关闭断言的,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableassertions或者-da关闭断言(默认情况,可有可无)。我这里用idea,使用以下部分开启断言功能断言的使用断言是通过关键字assert来定义的,一般的,它有两种形式。assert ;assert : ;当然所有的断言只有在错误的时候才会控制台打印,原创 2020-06-06 21:32:26 · 280 阅读 · 0 评论