今天发现了自己在前面遇到的问题还没总结:
1、Collection和Collections的区别。
Collection是一个集合框架的父接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式
Collections是一个包装类。它包含有各种有关集合操作的静态多态方法。 他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
2、前面提到了Collections提供了排序的操作,那么就能想到算法,我第一时间能想到的就是斐波那契数列:那么他的代码如何实现呢?
这个是靠递归实现的,应该还可以简便一点,但是习惯这个写法啦就不改了。
/**
* 递归实现
* @param n
* @return
*/
public static int fibonacci(int n){
//分开讨论一下
if (n == 1 || n == 2) {
return 1;
}
if (n > 2) {
//递归调用
return fibonacci(n - 1) + fibonacci(n - 2);
}
//如果输入错误的n,一律返回-1
return -1;
}
下面这个是靠for循环写的,用Long型来写吧,别最后测试的时候溢出了。
/**
* 通过for循环和数组的方式实现
* @param n
* @return
* 这里建议用long类型,防止溢出。
*/
public static long fibonacci3(int n) {
if (n < 1) {
return -1;
}
if (n == 1 || n == 2) {
return 1;
}
long[] arr = new long[n];
arr[0] = arr[1] = 1;
//第一个和第二个数据特殊处理
for (int i = 2; i < n; i++) {
arr[i] = arr[i -2] + arr[i - 1];
}
//可以得到整个的数列数据 仅n>2
System.out.println("数组内容:" + Arrays.toString(arr));
return arr[n - 1];
}