A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苦逼的BUG 初级黑马   /  2018-12-12 22:34  /  788 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数据结构:
栈(stack):先进后出。
队列(queue)):先进先出。
数组(Array):查询快,增删慢。
链表(linked list):查询慢,增删快。
单项链表:只有一条链,不能保证顺序。
双项链表:有两条链,一条记录序号,保证顺序。

红黑树: 速度特别快,趋近平衡树,查找叶子元素少和多次数不多于二倍
红黑树的约束:  1. 节点可以是红色的或者黑色的
2. 根节点是黑色的
3. 叶子节点(特指空节点)是黑色的
4. 每个红色节点的子节点都是黑色的
5. 任何一个节点到其每一个叶子节点的所有路径上黑                                                        色节点数相同 红黑树的特点:

二叉树:每个节点不超过2的有序树。
排序树:左大右小。
平衡树:左右相等。
不平衡树:左右不相等


List集合:
特点:
有序,有索引,元素可重复。
特有方法:
public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
public E get(int index) :返回集合中指定位置的元素。         public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
注意:
防止越界异常。


Linkedlist集合
1.是双链表结构,方便元素添加与删除。
2.里面包含大量操作首位元素方法。
注:使用linkedlist集合特有方法,不能使用多态
常用特有方法:
1.public void addFirst(E e) :将指定元素插入此列表的开头。
2.public void addLast(E e) :将指定元素添加到此列表的结尾。
3.public E getFirst() :返回此列表的第一个元素。
4.public E getLast() :返回此列表的后一个元素。
5.public E removeFirst() :移除并返回此列表的第一个元素。
6.public E removeLast() :移除并返回此列表的后一个元素。
7.public E pop() :从此列表所表示的堆栈处弹出一个元素。
(等同于removefirst)
8.public void push(E e) :将元素推入此列表所表示的堆栈。
(等同于addfirst)
9.public boolean isEmpty() :如果列表不包含元素,则返回true




Vector集合
数组结构,单线程。
已被Arraylist取代。
Set集合
不能存储重复元素,没有索引,不能使用普通的for循环遍历。
HashSet集合是它的实现类。
HashSet集合
1.不能存储重复元素。
2.没有索引,没有带索引的方法,不能使用for循环遍历。
3.是一个无序集合。
4.底层是一个哈希表结构。
5.自定义时必须重写hashcode和equals方法。
LinkedHashSet集合
底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序。


可变参数
使用方法:
当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数。
使用格式:
修饰符 返回值类型 方法名(数据类型。。。变量名){ }
可变参数的原理:
底层是数组。
传递参数个数可以是0个也可以多个。
注意事项:
1.一个方法的参数列表,只能有一个可变参数。
2.如果方法的参数有多个,那么可变参数必须写在参数列表的末尾。

Collections集合工具类
常用方法:
1.public static <T> boolean addAll(Collection<T> c, T... elemen                ts) :往集合中添加一些元素。
2.public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
3.public static <T> void sort(List<T> list) :将集合中元素按照默认                规则排序。
4.public static <T> void sort(List<T> list,                        Comparator<? super T> ) :将集合中元素按照指定规则排序。
注意事项:
Sort方法使用前提
被排序的集合里边储存的元素,必须实现comparable接口重写compareTo方法。
年龄升序排列:
Return this.getAge()-(参数)o.getAge();
降序与之相反
自定义比较规则:比较两个人的年龄(this,参数person)=升序排序=>return this.getAge() - o.getAge()(反之降序)
static <T> void sort(List<T> list,Comparator<? super T>)排序方法
Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int result =o1.getAge()-o2.getAge();
                if(result ==0){
                    result =o1.getname().charAt(0)-o2.getname().charAt(0)
                }return result;
            }
        });
Map集合
特点:
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个                value)。
2.Map集合中的元素,key和value的数据类型可以相同,也可以不                同。
3.Map集合中的元素,Key可以重复,value不能重复。
4.Map集合中的元素,Key和value是一一对应的。

Map常用实现类:
HashMap类(HashMap《k,v》implements Map《k,v》):
1.底层是哈希表,查询速度特别快。
2.无序集合。
LinkedHashMap类(LinkedHashMap《k,v》HashMap《k,v》)
1.底层是哈希表+链表(保证顺序)。
2.有序集合。


Map常用方法:
1.PublIc v put(k key,v value);把指定的键与指定的值添加到Map                        集合中。(key不重复,返回值为null;重复用新的value替换重复的                        value返回被替换的value)
2.public V remove(Object key) : 把指定的键 所对应的键值对元素 在                        Map集合中删除,返回被删除元素的 值。(key存在v返回被删除的值,                        不存在,v返回null)
3.public V get(Object key) 根据指定的键,在Map集合中获取对应的                        值。(key存在,返回对应的value值;不存在,返回null)
4.Boolean containskey(Object key)判断集合中是否包含指定的键。
(包含返回true,不包含返回false)
5.public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集                        合中。 (遍历Map集合方法之一)
6.public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有                        的键值对对象的集合(Set集合)。(遍历Map集合方法之一)

HashMap储存自定义类型键值:
Map集合保证KEY是唯一的。
在所在类里重写Hashcode和equals。



LinkedHashMap集合 entends HashMap
底层原理:
哈希表+链表(记录元素的顺序)
有序的。
Throwable:
1.Error:工程师不能修复,只能修改代码。
2.Exception:由于使用不当所导致,可以避免。
处理异常:
1.往上抛,虚拟机处理。
2.Try{}catch(){}处理异常,处理完后程序继续处理。

throw关键字:
作用:
可以使用throw关键字在指定的方法中抛出指定的异常。
格式:
throw new xxxException(”异常产生的原因”);
注意:
1.throw关键字必须写在方法的内部。
2.throw关键字后边new的对象必须是Exception或者Exception                的之类对象。
3.throw关键字抛出指定的异常对象,我们就必须处理这个异常对象。
Throw关键字后边创建的是RuntimeException或者是RuntimeException的子类对象,我们可以不处理,默认交个JVM处理(打印异常对象,中断程序)。
throw关键字后边创建的是编译异常(写代码时报错)我们就必须处理这个异常要么throws要么try。。。Catch。。。

终结:
1.throw:写在方法内部,我们终结抛异常,我们可以自定义异常的信息。
2.throws:写在方法上,JVM帮我们抛异常,使用默认异常信息。

Obects类中的静态方法:
Publicstatic《t》 T requireNonNull(T obj):查看指定引用对象是否为null

throws关键字:
作用:
当方法内部抛出异常对象的时候,那么我们就必须处理这个异常对象。
抛出方法的调用者处理,最终交给JVM处理(中断处理)。
格式:在方法声明时使用

注意:
1.throws关键字必须写在方法声明处。
2.Throws关键字后边声明的异常必须是Exception或者Exception的子类。
3.方法内部如果抛出了多个异常对象,那么throws后边必须也声明多个异常如果多个异常对象有子父类关系,那么直接声明父类异常即可。
4.调用了一个声明抛出异常的方法,我们就必须大狐狸声明的异常要么继续使用throws声明抛出,交个方法的调用者处理,最终交个JVM要么try。。。Catch自己处理异常。

Try...catch:异常处理的第二种方法,自己处理异常。
格式:
Try{
可能产生异常的代码
}catch(定义一个异常的变量,用来接收try中抛出的异常对象){
异常的处理逻辑,异常对象之后,怎么处理异常对象
一般在工作中,会把异常的信息记录到一个日志中
}
...
Catch(异常类名 变量名){
}
注意:
1.try中可能会抛出多个异常对象,那么久可以使用多个catch来处理。
2.如果try中产生了异常,那么久会执行catch中的异常处理逻辑,自行完毕catch继续执行值胡的代码。如果没有产生异常,则直接执行之后的代码。



finally关键字:
finally里的代码无论如何都会执行。
注意:
1.finally不能单独使用,必须和try一起使用。
2.一般用于资源释放(资源回收)无论程序是否出现异常,最后都要资源释放(IO)

自定义异常类:
JAVA提供的异常类,不够我们使用,需要自己定义一些异常类。
格式:
Public class XXXException extends Exception/RuntimeException{
添加一个空参数的构造方法
添加一个带异常信息的构造方法
}
注意:
1.自定义异常类一般都是以Exception结尾,说明该类是一个异常类。
2.自定义异常类,必须的继承Exception或者RuntimeException
继承Exception:那么自定义异常类是一个编译期异常,如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws/要么try...catch
继承RuntimeException:那么自定义的异常就是一个运行期异常.无序处理,        交给JVM处理


线程:
并发:指两个或多个事件在同一个时间段内发生。
并行:指两个或多个事件在同一时刻发生(同时发生)。

多线程:
创建多线程程序的第一种方法:创建thread类的子类。
实现步骤:
1.创建一个thread类的子类。
2.在thread类的子类中重写run方法。
3.常见thread类的子类方法



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马