- 浏览: 118152 次
- 性别:
-
最新评论
-
lueye:
...
java实现归并排序 -
lueye:
堆排序的时候for循环中是不是应该len > 0 而不是 ...
java实现选择排序(直接选择排序、堆排序) -
jadymrhu:
...
java集合辅助类 Collections、Arrays -
男人50:
...
java 集合的数据结构 -
shuizhaosi888:
string2020 写道RandomAccess 是干啥的
...
java ArrayList源码 下
文章列表
通过spring提供方法,在配置文件中取传值
调用get方法
targetObject :指定调用的对象
propertyPath:指定调用那个getter方法
例1:
public class Test1 {
private String name = "nihao";
public String getName() {
return name;
}
}
<bean id="t1" class="i.test. ...
ApplicationContext context =new ClassPathXmlApplicationContext("Beans.xml");
/**
* 可以通过spring加载文件
* file:绝对路径
* classpath:从类加载路径加载
* ftp:从网络,基于ftp协议加载
* http:从网络,基于http协议加载
*/
InputStream in = context.getResource("classpath:Beans.xml&quo ...
备注:Aware接口spring标记接口 表示spring的回调
org.springframework.beans.factory.FactoryBean
/**
* 调用getBean()时spring容器每次返回 getObject()方法的返回值
*
*/
public class Factory implements FactoryBean<Test1> {
@Override
public Test1 getObject() throws Exception {
return new Test1();
...
基础配置模版
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/sch ...
查询二叉树是平衡树->红黑树的基础,红黑树是TreeMap和TreeSet实现的基础。
深度:根到任意节点的唯一路径长,根节点的深度是零
高度:从节点到一片树叶的最长路径长,树叶的高度是零
二叉树:每个节点都不能有多余两个的儿子
public class BinarySearchTree<T extends Comparable<? super T>> {
// 树的每个节点都是一个Node
private static class Node<T> {
/**
* 构造方法
*/
Node(T ele ...
五 字符集转换和乱码问题
a) 文件都是按字节存储的,即使是使用字符流对文件进行写入,最终也会转换成字节
进行存储。这时就需要将字符转换成字节,不同的字符集一般转换成的字节格式是
不同的。看下面代码
String str = "字符";
byte[] utf8 = str.getBytes("utf-8");
System.err.println(Arrays.toString(utf8));
//输出:[-27, -83, -105, -25, ...
NIO简介
nio的包主要有四个,分别是
1. 缓冲区包:java.nio 出现版本:Java SE1.4
2. 通道包:java.nio.channels 出现版本:Java SE1.4
3. 字符集包:java.nio.charset 出现版本:Java SE1.4
4. 文件处理包:java nio.file 出现版本:Java SE1.7
a
一 I/O缓冲区
用户空间:常规进程所在区域,JVM就是常规进程,该区域执行的代码不能直接访问硬件
设备
内核空间:操作系统所在区域。内核代码它能与设备控制器通讯,控制着用户区域进程的运
行状态,等等。最重要的是,所有的I/O 都直接或间接通过内核空间
数据交互:当用户(java)进程进行I/O操作的时候,它会执行一个系统调用将控制权移交给
内核,内核代码负责找到请求的数据,并将数据传送到用户空间内的指定缓冲区
...
Arrays、Collections
1 )数组集合之间转换
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
a)Arrays.asList()这个方法是用传入的数组作为底层实现的,因此不能不改变大小,即“固定 ...
1、Collection集合
2、Map集合
* 图片中略掉抽象类
1)Collection继承接口Iterable,所以其子类都可通过迭代器遍历元素。为了保证速度ArrayList适合用
for循环,LinkedList适合用迭代器
public static <T> void method(List<? super T> list) {
...
归并排序
归并排序,指的是将两个已经排序的序列合并成一个序列的操作。
归并操作的过程如下:
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
设定两个指针,最初位置分别为两个已经排序序列的起始位置
比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针到达序列尾
将另一序列剩下的所有元素直接复制到合并序列尾
/**
* 归并排序
*
* @param ts
*/
@SuppressWarnings(" ...
冒泡排序
由于它的简洁,冒泡排序通常被用来对于程序设计入门的学生介绍算法的概念。
冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
/**
* 冒泡排序
*
* @param ts
*/
public static <T extends Comparable&l ...
直接选择排序
选择排序的原理:将数组分为有序区,无序区。初始有序区元素为0,整个数组为无序区。每次遍历从无序区中选出一个最小(或最大)的元素,放在有序区的最后,每一次遍历排序过程都是有序区元素个数增加,无序区元素个数减少的过程,直到无序区元素个数位0。
直接选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的数组进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
/**
* 直接选择排序
*
* @pa ...
直接插入排序
直接插入排序的原理:先将原序列分为有序区和无序区,然后再经过比较和后移操作将无序区元素插入到有序区中,
下面表格中,排序之前取第一个元素为有序区10,无序区9到4,带颜色为有序区。
待排序数组
10
9
8
7
6
5
4
第一次排序
9
10
8
7
6
5
4
1. 当你创建一个enum类时,编译器会为你生成一个相关的类,这个类继承自Enum
/**
* 枚举类默认继承的java.lang.Enum类(编译器控制),所以不能再继承其它类
* Enum实现了 Comparable<E>, Serializable 接口
*/
public enum MeiJu {
MEIJU1 ...