点击上方链接,选择“ 关注 ”
重磅干货,第一时间送达
大家好,我是OnlyCoding
还记不记得前几天我给大家整理的一些二叉树的题目
拖了好久
nou...就是这个
在刷题的过程中思考更多的是还有没有其它数据结构可以实现该操作,还有就是对于之前学习java语言时候对一些东西理解不是很深刻,可能是学习时间久了,有点感觉了
虽然是一周的时间,有那么一两天我是在做其它的东西
下面是题目
最大的感受就是基础太重要了
比如java常见的容器:
List、LinkedList、ArrayList
java多态
java中对象的创建
比如:类名 对象名 = new 类名
这种实例化
比如:接口 对象名 = new类名
可能有的小伙伴写代码的时候不怎么注意这些,哈哈哈,是我太菜
接口是为了实现多态
然后就会有人疑惑,多态和不多态有什么区别么
在使用的时候,好像区别都不大。实例化对象调用方法,你就会发现使用接口 对象名 = new 类名; 方式实例化的对象只能调用接口中有的方法,而不能调用类中特有的方法。而使用类名 对象名 = new 类名;方式创建出来的对象可以调用所有的方法
在现实生活中,我们在操作计算机的时候,相同快捷键在不同软件上做的操作都不一样,就是同一个事件发生在不同的对象上会产生不同的结果。
package com.edu.gitLikou;
interface People{
void peopleList();
}
class Student implements People{
public void peopleList(){
System.out.println("I’m a student.");
}
public void peopleage(){
System.out.println("今年23");
}
}
class Teacher implements People{
public void peopleList(){
System.out.println("I’m a teacher.");
}
}
public class Example{
public static void main(String args[]){
People a; //声明接口变量
a=new Student(); //实例化,接口变量中存放对象的引用
System.out.println(a);
a.peopleList(); //接口回调
a=new Teacher(); //实例化,接口变量中存放对象的引用
System.out.println(a);
a.peopleList(); //接口回调
}
}
多态的实现方式有这么几种
1、重写
2、接口
3、抽象类和抽象方法
java中的队列(queue)和双队列(deque)
什么是队列queue
队列作为先行结构中的一种,数据结构和栈相反,是先进先出的顺序方式
基本操作:
压入元素(添加):add()、offer()
弹出元素(删除):remove()、poll()
获取队头元素(不删除):element()、peek()
什么是双端队列deque
元素可以从前(头) 或后(尾) 添加或删除。因此也经常被称为首尾链表,只不过是前端与后端都支持插入和删除操作的队列,更实用,所以也就不存在先进先出这种说法了。
基本操作:
插入元素:addFirst(e)、offerFirst(e)
删除元素:removeFirst()、pollFirst()
获取元素:getFirst()、peekFirst()
Deque接口扩展(继承)了 Queue 接口。在将双端队列用作队列时,将得到 FIFO(先进先出)行为。将元素添加到双端队列的末尾,从双端队列的开头移除元素。从 Queue 接口继承的方法完全等效于 Deque 方法,如下表所示:
双端队列也可以进行栈的操作,后进先出,元素被推入双端队列的开头并从双端队列开头弹出。堆栈方法完全等效于 Deque 方法,如下表所示:
deque方法有xxxLast()和xxxFirst(),xxxLast()方法和xxx()方法操作的效果是一样的
综上,不管是list、linkedlist还是queue、还是deque,添加元素都是从左边,如果继续添加元素,原来的元素不动,继续往后添加。
即[first<-,->last]
不知道有没有说清楚,运行一下代码就知道了
https://github.com/BuLaiChuang/leetcode.git
git