Java工具类

【JAVA高级】——吃透JDBC中的封装工具类、ORM和Date工具类 吃透JDBC中的封装工具类、ORM和Date工具类 阅读详情

我的意思是我要陆续写一些Java的代码,方便做一些琐碎的任务,比如:读写文本文件,直接将他写成方法,直接调用就好了,提高一点开发效率,开发环境是 JavaSE-9 版本。这个要不定时更新了。

读文件

读文件,把文本文件内容按行存入到List集合中,我们只要输入文件路径(一个字符串),就可以读取出所有内容了,用循环就可以按行读取出List里的内容了(所有实现List接口的集合类都可以作为输出)。

/**
     * 读文件,把文件内容返回到一个字符串列表中
     * @param filePath 文件的路径
     * @return 文件中的所有内容
     */
    public static List<String> read(String filePath) {
        List<String> allLine = new ArrayList<String>();
        BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)));
            String line = "";
            while ((line = br.readLine())  != null) {
                allLine.add(line);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return allLine;
    }

写文件

    /**
     * 将内容写入到文件
     * @param list 写入的内容
     * @param filePath 文件路径
     */
    public static void write(final List<String> list, String filePath) {
        BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
            int i = 0;
            for (String line : list) {
                bw.append(line);
                i++;
                if (i < list.size())
                    bw.newLine();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                bw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }       
    }

队列

实现队列时遇到了一个问题,就是实现 获取内部元素的方法content 时,不能将object转化为特定类型(如:Integer、Double等)。造成这个问题的原因为泛型数组不能直接实例化,只能引用Object等具体类型的数组。一开始准备使用反射来解决这个问题,但是没有解决。我这里是获取到运行时Item的对应类型名,然后创建临时的类型对象,最后将引用知道这个临时对象即可。 toString()方法帮了我很大的忙,具体请看content方法。

但是理论上,队列只关心进出队列的顺序逻辑和进出队列的元素。并不关心中间的元素,也不需要获取所有的元素,这和栈相似。不过,解决这个刁钻的问题也很有必要,这样队列更加灵活,能应付更复杂的逻辑。

printContent()方法和content()方法的区别是:前者只负责打印,后者可以获取到所有的元素。

理论上我希望这个队列可以放入任何对象,实际上它目前只能放入int、double和String类型的数据,它可以扩展加入其他类型数据,但要可以放入所有类型的数据,几乎是不可能的。 如果有大神可以解决这个问题,请告诉我,大家互相学习,谢谢

/**
* @author 龙卫兵
*/
public class MyQueue<Item> {
    private Object[] myArray;
    private int capacity;  // 容量
    private int n;  // 元素个数

    public MyQueue() {
        capacity = 2;
        myArray = new Object[capacity];
    }

    public MyQueue(int capacity) {
        this.capacity = capacity;
        myArray = new Object[capacity];
    }

    public void push(Item item) {
        if (n > capacity/2) {
            capacity *= 2;
            Object[] temp = new Object[capacity];
            for (int i = 0; i < capacity/2; i++)
                temp[i] = myArray[i];
            myArray = temp;
        }       
        myArray[n++] = item;
    }

    public void pop() {
        if (isEmpty())
            throw new NullPointerException("数组为空");
        else {
            for (int i = 0; i < n-1; i++) {
                myArray[i] = myArray[i + 1];
            }
            myArray[--n] = null;
        }
    }

    public int size() {
        return n;
    }

    public int getCapacity() {
        return capacity;
    }

    public boolean isEmpty() {
        return n == 0;
    }

    public void printContent() {
        for (int i = 0; i < n; i++) {
            System.out.println(myArray[i]);
        }
    }

    public Item[] content() {
        String itemName = myArray[0].getClass().getSimpleName();
        if (itemName.equals("Integer")) {
            Integer[] temp = new Integer[n];
            for (int i = 0; i < n; i++) {
                temp[i] = new Integer(myArray[i].toString());
                // System.out.println(temp[i]);
            }
            return (Item[])temp;
        } else if (itemName.equals("String")) {
            String[] temp = new String[n];
            for (int i = 0; i < n; i++) {
                temp[i] = myArray[i].toString();
                // System.out.println(temp[i]);
            }
            return (Item[])temp;
        } else if (itemName.equals("Double")) {
            Double[] temp = new Double[n];
            for (int i = 0; i < n; i++) {
                temp[i] = Double.valueOf(myArray[i].toString());
                // System.out.println(temp[i]);
            }
            return (Item[])temp;
        }
        return null;
    }

    public static void main(String[] args) {
        System.out.println("**********************元素为int********************************");
        MyQueue<Integer> queue1 = new MyQueue<Integer>();
        System.out.println("The first capacity of queue1 is " + queue1.getCapacity());
        queue1.push(1);
        queue1.push(2);
        queue1.push(3);
        System.out.println("The second capacity of queue1 is " + queue1.getCapacity());
        System.out.println("The size of queue1 is " + queue1.size());
        queue1.printContent();
        System.out.println("**********************删除一个元素后********************************");
        queue1.pop();
        queue1.printContent();
        System.out.println("**********************删除一个元素后********************************");
        queue1.pop();
        queue1.printContent();
        System.out.println("**********************添加一个元素后********************************");
        queue1.push(16);
        queue1.printContent();
        //Integer[] in = (Integer[])queue1.content();
        Integer[] m = queue1.content();
        for (int i = 0; i < queue1.size(); i++) {
            System.out.println(m[i]);
        }
        System.out.println("**********************************************************");
        MyQueue<Integer> queue2 = new MyQueue<Integer>(5);
        System.out.println("The first capacity of queue2 is " + queue2.getCapacity());
        queue2.push(4);
        queue2.push(5);
        queue2.push(6);
        System.out.println("The second capacity of queue2 is " + queue2.getCapacity());
        System.out.println("The size of queue2 is " + queue2.size());
        queue2.printContent();
        System.out.println("********************元素为字符串******************************");
        MyQueue<String> queue3 = new MyQueue<String>();
        queue3.push("nihao");
        queue3.push("haha");
        queue3.push("zdjd");
        String[] mm = queue3.content();
        for (int i = 0; i < queue3.size(); i++) {
            System.out.println(mm[i]);
        }
        System.out.println("********************元素为double******************************");
        MyQueue<Double> queue4 = new MyQueue<Double>();
        Double x1 = new Double("5.666");
        queue4.push(x1);
        Double x2 = new Double("-5.666");
        queue4.push(x2);
        Double[] mmm = queue4.content();
        for (int i = 0; i < queue4.size(); i++) {
            System.out.println(mmm[i]);
        }
    }
}
ESD放电路径分析 当金属外壳接地情况下,大部分外部干扰信号将会通过外壳,外壳到接地点,再由接地点回到干扰信号的地,实现干扰信号的回流,这点不仅仅适用于​ESD,对于其他的RI类干扰,也同样适合。发现内部金属板跟外壳的搭接处存在较多的缝隙点,该缝隙点对于频率较高的信号能够实现较为理想的回流,但是对于频率没有那么高的信号,则较难以实现回流,我们尝试将这些缝隙用铜箔包裹住,充分降低该金属板跟外壳的接触阻抗​。我们分析,路径3其实是不期望的路径,我们最期望的路径是1,或者2的内部金属部件跟外壳良好接触情况下的路径。 阅读详情

相关推荐

Allegro17.4原理图-PCB双向联动技巧:从网表生成到同步高亮

本文深入解析了Cadence Allegro 17.4中原理图与PCB的深度双向联动技巧。核心在于通过精准的网表生成与管理、实时的跨窗口交互高亮与信号追踪,以及元件与封装的智能匹配更新,构建高效协同设计工作流。掌握这些技巧能显著提升高速、高密度电路设计的效率与准确性,实现从逻辑设计到物理实现的无缝衔接。

weixin_29178069的博客 358

JAVA之常用的工具类

目录 1 org.apache.commons.io.IOUtils 2 org.apache.commons.io.FileUtils 3org.apache.commons.lang.StringUtils 4 org.apache.http.util.EntityUtils 5 org.apache.commons.lang3.StringUtils 6 org.apache....

上善若泪 3万+

GNSS/INS松组合导航实战:如何用卡尔曼滤波提升定位精度(附MATLAB代码)

本文深入探讨了GNSS/INS松组合导航的工程实践,详细阐述了如何利用卡尔曼滤波算法融合卫星与惯性数据以提升定位精度。内容涵盖从仿真环境搭建、误差状态卡尔曼滤波器(ESKF)设计,到状态与观测方程实现、噪声参数调试及常见问题排查的全过程,并提供了可直接运行的MATLAB代码,为开发高精度、鲁棒的组合导航系统提供实战指南。

weixin_29057163的博客 165

java常用工具类

在Java和Spring Boot项目开发中,常用的公用工具类有以下几种类型:1. 字符串处理工具类:包含常见的字符串操作,如字符串拼接、分割、替换、转换大小写等。2. 时间日期工具类:提供日期的格式化、解析、计算、比较等功能,方便处理日期时间相关操作。3. 文件操作工具类:提供文件的创建、复制、删除、移动、重命名等操作,以及读取、写入文件内容的方法。4. 数据校验工具类:包含常见的数据校验方法,如判断是否为空、是否为数字、是否为邮箱等。

weixin_47425074的博客 3936

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

k8291121的博客 2008

UG\NX二次开发 判断对象是虚线还是实线

网友提问“怎么区分虚线实线”,这个可以通过函数判断。

王牌飞行员_里海的博客 357

常用的Java开发工具类

推荐一些比较常用的Java开发工具类

shyの个人笔记 5130

DDR5 JEDEC标准简析:一次读懂DDR5的核心规范!

JEDEC,全称是,中文名称是「电子元件工程联合委员会」,它是全球权威的存储接口标准制定机构。我们常见的 DDR2、DDR3、DDR4、DDR5 都是它搞出来的。📌 JEDEC 就像存储接口界的“裁判+编剧”——规定谁该怎么跑,怎么演,怎么配合。

weixin_43199439的博客 2571

JAVA工具类

7.1.1 Java基础类库。

weixin_68351124的博客 1620

Android12+RK3588 多应用录音适配

两个应用能够同时录音,在Android12上的实现

guanmingyuangmy的博客 2225

Python爬虫实战:利用最新技术爬取微信公众号文章(基于搜狗搜索)

使用最新Python版本确保兼容性和性能:比传统Requests更强大的HTML解析库Playwright:新一代浏览器自动化工具,比Selenium更高效Asyncio:异步IO框架提升爬虫效率Redis:分布式任务队列和去重MongoDB:非关系型数据库存储结构化数据本文详细介绍了如何利用Python最新技术栈构建一个功能强大的微信公众号文章爬虫。通过结合Playwright浏览器自动化、异步IO、分布式任务队列等技术,我们实现了一个能够绕过反爬机制、高效稳定抓取数据的解决方案。

2201_76125261的博客 1796

JAVA常用的工具类

我们都知道,java中的很多集合,比如:ArrayList、LinkedList、HashMap、HashSet等,都是线程不安全的。中传递信息,比如:traceId,source等,便于在查询日志时能够串联一次完整的请求链路,快速定位问题。包下的一个类,它的全称是Mapped Diagnostic Context,我们可以认为它是一个线程安全的存放诊断日志的容器。**接口,MDC中获取当前请求的traceId,然后设置到header中。**方法,将这些线程不安全的集合,直接转换成线程安全集合。

java程序员 3771

Python爬虫实战:爬取并分析电子商务平台用户评论数据

爬虫(Web Scraping)是指通过编写程序模拟浏览器行为,从网站中提取数据的过程。爬虫技术可以自动化地抓取网站上的信息,广泛应用于数据收集、价格监控、市场研究等多个领域。情感分析(Sentiment Analysis)是一种自然语言处理技术,用于确定文本的情感倾向。对于电子商务平台的评论数据,情感分析可以帮助商家了解消费者的反馈情绪,例如产品的好评、差评或中性评价。本文详细介绍了如何使用Python爬虫技术从电子商务平台抓取并分析用户评论数据。我们展示了如何通过requestsSelenium。

2201_76125261的博客 1175

Java 工具类

摘要:本文主要介绍了Java工具类的概念、常见工具类库以及使用方法。Java工具类是一种常用的面向对象编程设计模式,通过封装静态方法提供可重用的功能模块,能够提高代码的可维护性和效率。常见的Java工具类库包括Hutool、Apache Commons等,同时也介绍了如何创建和使用自定义工具类的方法。通过使用Java工具类,可以方便地进行字符串处理、数据库连接、文件操作等常见任务,从而提高开发效率。

Java_soul_GJH的博客 881

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JAVA行转列工具类

目录 show me the code 使用方法 测试代码 有时为了统计的需要,需要将数据进行行转列,在数据库中一般用CASE WHEN语句来解决,但无法生成生成列标题,如果遇到想动态生成列的情况,用CASE WHEN便不是那么好处理了 正好最近我的一个个人小项目中遇到了这个问题,需要根据数据动态生成列标题,同时数据量不多,便想到自己写一个JAVA版通用的数据行转列的工具类 show ...

水中加点糖 6724

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java Https工具类

import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import ja...

weixin_33705053的博客 299

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java 集合工具类

工具类是 Java 集合操作的“瑞士军刀”,提供了排序、查找、同步化、不可修改化等实用功能,极大简化了集合处理代码。掌握其核心方法,能显著提高开发效率,同时保证代码的安全性和可读性。实际开发中,需根据场景灵活选择合适的方法,尤其注意线程安全和不可修改集合的特性。点击此处进入练习题。

2501_91241024的博客 1042

java常用的并发工具类

Java 提供了丰富的并发工具类来帮助开发者应对多线程编程的挑战。从线程池管理到同步机制,再到并发集合和原子操作,每种工具类都有其特定的应用场景和优点,这些工具类位于包中,涵盖了从线程池、同步机制到并发集合的广泛功能。

Flying_Fish_roe的博客 1748

【java工具类】发邮件工具类

【java工具类】发邮件工具类 import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; /** * 发邮件工具类 */ public final class MailUtils { ...

来日浅谈的博客 456

[java工具类] 请求参数工具类

在开发过程中,我们经常需要将请求参数进行 & 拼接,以下是一个工具类,可以将Map中的数据转换为 & 格式的请求参数: package com.wr.park_toolkit.utils; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util

Aran_的博客 886

Java Utils工具类大全

小编这些年深知大多数初中级Java工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。原文链接:https://gitee.com/hh090807。

2401_88308357的博客 780

Java Arrays工具类详解

全面性:覆盖数组操作的各个方面高效性:底层使用优化算法实现便利性:静态方法调用简单直接小数组直接使用Arrays方法大数组考虑使用并行方法(如需要复杂操作时可结合Stream API使用Java 17 Arrays文档。

weixin_52242569的博客 1369

Java工具类大全

大家好,我是大彬~ 在平时开发过程中,经常会重复“造轮子”,在同一个项目里面,可能会出现各种各样每个人自己实现的工具类,这样不仅降低了开发效率,而且代码也不好维护。 今天整理了一些常用的工具类,在这里给大家分享一下,希望对大家有所帮助~ 字符串工具类 首先介绍一下​​commons-lang3​​的一个字符串工具类​​StringUtils​​,常用方法如下: 1、​​isEmpty()​​ 判断字符串是否为空。 public class StringUtilsTest { ...

HongYu012的博客 3511

java https 工具类_java Https工具类

import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import java.uti...

weixin_31764625的博客 196

java url工具类_UrlUtils工具类,Java URL工具类,Java URL链接工具类

UrlUtils工具类,Java URL工具类,Java URL链接工具类©Copyright 蕃薯耀 2017年7月15日http://www.cnblogs.com/fanshuyao/Java代码 收藏代码import java.util.HashMap;import java.util.Map;import java.util.Set;public class UrlUtils {/***...

weixin_28790465的博客 698
上一篇: python学习笔记
下一篇: 使用Google word2vec训练我们自己的词向量模型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值