九月第三周总结

1. StringBuilder使用reverse()方法

使用reverse()方法之后,StringBuidler的对象发生反转,然后返回这个反转后的值,而不是仅仅返回反转后的值!下面通过一个例子验证一下:

public class Main{
    public static void main(String[] args) {
        StringBuilder sb =  new StringBuilder("12345");
        System.out.println("Original: " + sb.toString());
        System.out.println("Reverse for one times: " + sb.reverse().toString());
        System.out.println("Reverse for two times: " + sb.reverse().toString());
    }
}

输出:

Original: 12345
Reverse for one times: 54321
Reverse for two times: 12345

2. Java中Queue不同方法的区别

根据出错情况分为两类,一类是抛出异常,一类是返回false或者null

 

 (图片来自廖雪峰的官方网站)

3. Math.ceil是java的向上取整函数

public class Main {
    public static void main(String[] args) {
        double num1 = 1.2;
        double num2 = 1.0;
        System.out.println(Math.ceil(num1));
        System.out.println(Math.ceil(num2));
    }
}

输出:

2.0
1.0

4. List删除元素之后,元素的索引自动向前移动,这是和数组不同的地方。

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> num = new ArrayList<>();
        num.add(1);
        num.add(2);
        num.add(3);
        System.out.println(num.get(0));
        num.remove(0);
        System.out.println(num.get(0));
        num.remove(0);
        System.out.println(num.get(0));
    }
}

输出:

1
2
3

5. String split是java的拆分函数,输入拆分的字符串,返回拆分后的数组。

public class Main {
    public static void main(String[] args) {
        String str = "Hello-World!-haha-aiyou-bucuoo-!";
        String c = "-";
        System.out.println("Result:");
        String[] res = str.split(c);
        for(String s : res){
            System.out.print(s + " ");
        }
    }
}

输出:

Result:
Hello World! haha aiyou bucuoo !

6. 需要命令行执行的程序,可以考虑将其放到Linux上去执行。通过Xshell和Xftp(非商用版是免费的,不需要破解版),就可以快速轻量地实现环境的搭建。

 

下面是《算法》第四版Linux的环境搭建过程

(1)安装jdk

~> sudo add-apt-repository ppa:openjdk-r/ppa
~> sudo apt-get update
~> sudo apt-get install openjdk-11-jdk

(2)配置类库脚本

~> cd /usr/local
/usr/local/> sudo curl -O "https://lift.cs.princeton.edu/java/linux/lift-cli.zip"
/usr/local/> sudo unzip lift-cli.zip
/usr/local/> sudo rm lift-cli.zip

测试一下命令 javac-algs4 和 java-algs4 (代替原有的 javac 和 java ),如果成功,那么环境就搭建完成了。

 7. 归并排序的示例

//Main.java
public class Main {
    public static void main(String[] args) {
        Comparable[] a = {'E','E','G','M','R','A','C','E','R','T'};
        Merge.sort(a);
        for(Comparable c : a){
            System.out.print(c + " ");
        }
    }
}
//Merge.java
public class Merge {
    private static Comparable[] aux;
    public static void sort(Comparable[] a){
        aux = new Comparable[a.length];
        sort(a, 0, a.length - 1);
    }
    private static void sort(Comparable[] a, int lo, int hi){
        if(hi <= lo){
            return;
        }
        int mid = lo + (hi - lo) / 2;
        sort(a, lo, mid);
        sort(a, mid + 1, hi);
        merge(a, lo, mid, hi);
    }

    public static void merge(Comparable[] a, int lo, int mid, int hi){
        int i = lo, j = mid + 1;
        for(int k = lo; k <= hi; k++){
            aux[k] = a[k];
        }

        for(int k = lo; k <= hi; k++){
            if(i > mid){
                a[k] = aux[j++];
            }
            else if(j > hi){
                a[k] = aux[i++];
            }
            else if(less(aux[j], aux[i]) < 0){
                a[k] = aux[j++];
            }
            else{
                a[k] = aux[i++];
            }
        }
    }
    public static int less(Comparable i, Comparable j){
        return i.compareTo(j);
    }
}

输出

A C E E E G M R R T

 归并排序的时间复杂度:O(nlogn),空间复杂度:O(n)

转载于:https://www.cnblogs.com/zhaijiayu/p/11536575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值