美文网首页
java写算法常用代码段

java写算法常用代码段

作者: 抬头挺胸才算活着 | 来源:发表于2020-02-26 10:53 被阅读0次

参考资料:
[1]. Java中获取键盘输入值的三种方法
[2]. <T> T[] toArray(T[] a)的思考
[3]. JAVA 一个或多个空格分割字符串

  • 定义数组
Integer[] push = new Integer[]{1,2,3,4,5};
  • 定义栈
Stack stack = new Stack<Integer>();
  • 定义队列
Queue<E> queue = new LinkedList<E>();

add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
offer 添加一个元素并返回true 如果队列已满,则返回false
poll 移除并返问队列头部的元素 如果队列为空,则返回null
peek 返回队列头部的元素 如果队列为空,则返回null
put 添加一个元素 如果队列满,则阻塞
take 移除并返回队列头部的元素 如果队列为空,则阻塞
remove、element、offer 、poll、peek 其实是属于Queue接口。

  • 求数组的最大值
    Arrays.stream(dp).max().getAsInt();

  • 比较 lambda
    用字符串的最后一个字符进行排序
    Arrays.sort(strings, Comparator.comparing(a->(int)a.charAt(a.length()-1)));

  • 输入数字

        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例
            int n = in.nextInt();
            if(n < 1)
                continue;
}
  • Java接受控制台输入的方式
  1. char i = (char) System.in.read();
    只能读取字符
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine(); 

上面的代码的意思是System.in输入字节流,InputStreamReader将字节转化为字符,BufferedReader是一个缓冲流,提升效率用的,不用BufferedReader其实也可以,但是BufferedReader就没有readLine。
只能读取字符串

Scanner sc = new Scanner(System.in); 
String name = sc.nextLine(); 

注意nextInt之后还有回车,下一个可能被nextLine吸收,也就是说nextLine会吸收换行符,因为换行符我们可能看不见,所以可能就会跟预期的不一样。

这段代码和上边第三种实现输入方法给出的例子代码区别在于,这段代码先执行nextInit()再执行nextLine(),而第三种方法的例子是先执行nextLine(),再执行nextInit(),当你在运行着两段代码的时候你会发现第三种方法的例子可以实现正常的输入,而这段代码却在输入年龄,敲击enter键后,跳过了输入姓名,直接到了输入工资这里,(可以自己运行代码看看)这是为什么呢?其实,在执行nextInit()函数之后,敲击了enter回车键,回车符会被nextLine()函数吸收,实际上是执行了nextLine()函数吸收了输入的回车符(并不是没有执行nextLine函数),前面讲到和nextLine()功能一样的函数next(),他们的区别就在于:next()函数不会接收回车符和tab,或者空格键等,所以在使用nextLine()函数的时候,要注意敲击的回车符有个被其吸收,导致程序出现BUG!!!
最后小小的总结一下next()和nextLine()的区别:
在java中,next()方法是不接收空格的,在接收到有效数据前,所有的空格或者tab键等输入被忽略,若有有效数据,则遇到这些键退出。nextLine()可以接收空格或者tab键,其输入应该以enter键结束。

如何读取一行多个数字,用任意个空格隔开

使用"\s+"是隔绝多个空格.
/t相当于tab 缩进
/n回车
/r换行
\\s 作为分隔符表示空白

    private static Integer[] getTwoNums(){
        String line = sc.nextLine();
        // 使用一个或者多个空格
        String[] splits = line.split("\\s+");
        return new Integer[]{Integer.valueOf(splits[0]), Integer.valueOf(splits[1])};
    }

连续读取多个整数,忽略换行和空格。

static class InputReader{
    private InputStream stream;
    private byte[] inbuf=new byte[1024];
    private int lenbuf=0;
    private int ptrbuf=0;

    public InputReader(InputStream stream) {
        this.stream=stream;
    }
    private int readByte() {
        if(lenbuf==-1) {
            throw new UnknownError();
        }
        if(ptrbuf>=lenbuf) {
            ptrbuf=0;
            try {
                lenbuf=stream.read(inbuf);
            }catch(IOException e) {
                throw new UnknownError();
            }
            if(lenbuf<=0) {
                return -1;
            }
        }
        return inbuf[ptrbuf++];
    }
    public int nextInt() {
        int num=0,b;
        boolean minus=false;
        while((b=readByte())!=-1&&!((b>='0'&&b<='9')||b=='-'))
            ;
        if (b == '-') {
            minus = true;
            b = readByte();
        }

        while (true) {
            if (b >= '0' && b <= '9') {
                num = num * 10 + (b - '0');
            } else {
                return minus ? -num : num;
            }
            b = readByte();
        }
    }
}
  • List和Array的互相转化
    List->Array:Record[] rs = records.toArray(new Record[0]);(为什么要输入参数new Record[0],要获取输出的类型,具体看[2]
    Array->List:Arrays.asList(rs);

相关文章

  • java写算法常用代码段

    参考资料:[1]. Java中获取键盘输入值的三种方法[2]. T[] toArray(T[] a)的思考...

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

  • 面试经常问到的排序算法.md

    话不多说,直接看代码,代码都已经经过测试。 参考文章 一遍记住Java常用的八种排序算法与代码实现 白话经典算法系...

  • java中常用的算法?

    java中常用的算法?

  • encyption&decyption

    0, 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA 常用加密算法的Java实现总结(二) ...

  • ios常用算法大全

    ios常用算法大全 通用算法 (排序 查找 递归 链表等)欢迎大家来维护算法大全,有什么好的算法写的伪代码能运行测...

  • 常用非比较类排序算法

    前言 本篇完全转载于常用排序算法总结(二)。 其中有部分代码进行了更改,更改成java语言。 非对比类排序算法 非...

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

  • 熟记代码片段

    1.转自 一遍记住Java常用的八种排序算法与代码实现 直接插入排序:

网友评论

      本文标题:java写算法常用代码段

      本文链接:https://www.haomeiwen.com/subject/qjtqchtx.html