类java.util.Collections提供了对Set, List, Map进行排序,填充,查找元素的辅助方法。
类java.util.Collections提供了对Set, List, Map进行排序,填充,查找元素的辅助方法。
void sort(List)// 对List容器内的元素排序,排序的规则是按照升序进行排序。
void shuffle(List) //对List容器内的元素进行随机排列。
void reverse(List) //对List容器内的元素进行逆续排列。
void fill(List, Object)//用一个特定的对象重写整个List容器。
int binarySearch(List, Object)//对于顺序的List容器,采用折半查找的方法查找特定对象。
12345678910111213141516171819202122232425262728293031323334353637383940package cn.collection ...
Java
未读什么是泛型?
转载:https://segmentfault.com/a/1190000014120746
什么是泛型?Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常.
泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型
参数化类型:
把类型当作是参数一样传递
<数据类型> 只能是引用类型
相关术语:
ArrayList中的E称为类型参数变量
ArrayList中的Integer称为实际类型参数
整个称为ArrayList泛型类型
整个ArrayList称为参数化的类型ParameterizedType
为什么需要泛型?早期Java是使用Object来代表任意类型的,但是向下转型有强转的问题,这样程序就不太安全
首先,我们来试想一下:没有泛型,集合会怎么样
Collection、Map集合对元素的类型是没有任何限制的。
本来我的Collection集合装载的是全部的Dog对象,但是外边把Cat对象存储到集合中,是没有任何语法错误的。
把对象扔进集合中,集合是不知道元素的类 ...
为什么要有迭代器?
迭代模式是访问集合类的通用方法,只要集合类实现了Iterator接口,就可以用迭代的方式来访问集合类内部的数据,Iterator访问方式把对不同集合类的访问逻辑抽象出来,使得不用暴露集合内部的结构而达到循环遍历集合的效果。例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:
1for(int i=for(int i=0; i
Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致。我们在前面通过List学习的方法,在Set中仍然适用。因此学习Set的使用将没有任何难度。
Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致。我们在前面通过List学习的方法,在Set中仍然适用。因此学习Set的使用将没有任何难度。
Set容器特点:无序,不可重复。无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。更确切地讲,新元素如果和Set中某个元素通过equals()方法对比为true,则不能加入;甚至,Set中也只能放入一个null元素,不能多个。
Set常用的实现有:HashSet,TreeSet等,我们一般使用HashSet。
手动实现HashSet12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package cn.set;import jav ...
数据结构与算法
未读为什么要研究树结构?
为什么要研究树结构?
树结构本身是一种天然的组织结构
将数据使用树结构存储后,出奇的高效
二分搜索树[Binary Search Tree]
和链表一样,动态数据结构
12345Class Node{ E e; Node left; Node right;}
二叉树(多叉树)
二叉树具有天然递归结构
每一棵子树也是二分搜索树
存储的元素必须有可比较性
1234567891011121314151617181920212223242526272829303132//手动实现二分搜索树package cn.Bst;public class BST<E extends Comparable<E>>{ private class Node{ public E e; public Node left, right; public Node(E e) { this.e = e; left = null; right = null; ...
数据结构与算法
未读所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次访问。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,是二叉树上进行其他运算的基础。
二叉树遍历
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次访问。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,是二叉树上进行其他运算的基础。
在二叉树的遍历中存在三种较为常用的遍历方式:前序遍历,中序遍历,后序遍历。
前序遍历
先访问根节点
在序遍历左子树
最后序遍历右子树
从gif图上我们可以看出,前序遍历是从根结点开始从左边遍历各个点,当遍历到一个结点的前辅助点的时候,我们将这个数取出,最后我们得出前序遍历。
中序遍历
先中序遍历左子树
在访问根节点
最后中序遍历左子树
后序遍历
先后序遍历左子树
在后续遍历右子树
最后访问根节点
参考:
https://www.jianshu.com/p/45d75aeb3b01
普通方法和构造方法的区别
构造方法:
①方法名和 类名相同
②在方法名的前面没有返回值类型的声明
③在方法中不能使用return语句返回一个值
④在创建对象时,要调用new,如:book b1=new book();
⑤当没有指定构造方法时,系统会自动添加无参的构造方法
⑥当有指定构造方法时,无论该构造方法是有参,还是无参,系统都不会再自动添加无参的构造方法
⑦构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法
无参的构造方法
class person{
public person(){
System.out.println(“无参的构造方法被调用了。。。”);
}
}
class Ex11{
public static void main(String[] args){
person p=new person();
}
}
有参的构造方法(目的就是为了给对象实例变量赋值)
class person{
int age;
public person(int a){
age& ...
最基础的动态数据结构:链表
我们学的数组,栈,队列,都是依照动态数组实现的,而链表是最基础的动态数据结构。
链表 Linked List
数据存储在“节点”(NODE)中
1234class class Node{ E e; Node next;}
优点:真正的动态,不需要处理固定容量的问题
缺点:丧失了随机访问的能力
数组最好用于索引有语意的情况。scores[2]
最大的优点:支持快速查询
链表不适合用于索引有语意的情况。
最大的优点:动态。
12345678910111213141516171819202122232425262728package cn.lianbiao;public class LinkedList<E> { private class Node{ public E e; public Node next; public Node(E e,Node next) { this.e = e; this.next = next; } ...
GNU与GPL知识
自1984年起,Richard Stallman 在软件开发团体中发起开发自由软件的运动,并获得麻省理工学院(MIT)的支持。这就导致了自由软件基金会(Free SoftwareFoundation,FSF)的建立和GUN项目的产生。
在其他人的协作下,Richard Stallman创立了通用公共许可证(General Public License,GPL),这对推动自由软件的发展起了至关重要的作用。GPL许可核心思想是保证任何人有共享和修改自由软件的自由,任何人有权取得,修改和重新发布自由软件的源代码权利,但要求把具体的需求发布出来。
FSP的主要项目是GNU(GNU’S NOT UNIX,GNU不是Unix)。它的目标是建立可自由发布和移植的类Unix操作系统。GNU项目本身产生的主要软件包包括: Emacs编辑软件,gcc编译软件,bash命令解释程序和编程语言,以及gawk(GNU’S awk)等等。此外还包括许多操作系统必不可少的工具。
到1991年Linux内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在Lin ...
数据结构与算法
未读栈也是一种线性结构
相比数组,栈相应的操作是数组的子集
只能从一端添加元素,也只能从一端取出元素这一端称为栈顶
栈是一种后进先出的数据结构
栈 Stack
栈也是一种线性结构
相比数组,栈相应的操作是数组的子集
只能从一端添加元素,也只能从一端取出元素
这一端称为栈顶
栈是一种后进先出的数据结构
无处不在的Undo操作(撤销)
栈的应用
程序调用的系统栈
系统调用A,B,C三个函数,调用时依次让A,B,C入栈。开始让A入栈然后中断,开始执行B;指向函数C时,B函数中断,C开始执行
栈的实现
Interface Stack<E> ArrayStack<E>
Void push(E)(添加元素) (implement)
E pop()(取出元素)
E peek()(查看栈顶元素)
int getSize() (查看多少元素)
boolean isEmpty() (查看是否为空)
从用户的角度看,支持这些操作就好
具体底层实现,用户不关心
实际底层有多种实现方式
我们在动态数组的基础 ...
JavaScript是干什么的?
1. JavaScript是干什么的?
HTML是基本的网页(文字,图片,视频)
CSS是通过布局和样式让网页更加美观
JavaScript是给网页添加动画和一些其他的交互事件,让网页变得更加活泼。
JavaScript跟编程语言差不多,不过它不是编程语言,它是脚本语言,它的运行不需要编译,直接由解释器解释执行。它也有变量,函数。
1.1 JavaScript可以完成的效果
数据校验(输入的密码,年龄,用户名是否符合要求)
图片轮播
广告弹框
1.2 JavaScript的特点
语法相对来说比较简单(弱类型的变量类型)
跨平台(JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持)
1.3 JavaScript代码在哪里书写
第一种方式:网页内(可以放在网页的任意位置)
12<script type = <script type = "text/javascript">
第二种方式:行内通过事件引入
第三种方式:外部引入方式
1<script type = "text/javascr ...
Self-investment
未读读了很多书,上了很多写作课,还是写不出来?
读了很多书,上了很多写作课,还是写不出来?问题的症结分为两种
话痨型
没话说型
话痨型怎么办?
合并同类项
剥茧抽最长丝组合法:举例
逻辑思考与分析
分析大咖逻辑
阅读侦探小说
读新闻报纸
固定一个自己最擅长的语言和文体风格
任何一种文体和风格写得好都能很赚钱
积累看过的文体
多模仿体会
多尝试多种风格
多接触不喜欢的东西
掌握一些固定的文章结构模式
观察自己最喜欢的作者的文章,如何安排文章,如何叙述
尝试给10篇爆款文章列出提纲
写文章前,先摆出结构,不会写结构,从写提纲开始
话痨型:理顺,固化格式。
没话说型怎么办?
长肉第一大法:丰富自己的情感
读一些台湾和日本的文学作品
增加有深度的专一的知识储备,让肚子有话说
从生活小事开始写起
素材积累拼凑法
几个心理攻坚战
端正态度,关键在行动
这是一种长期的积累,不要急于求成,厚积薄发慢慢积累
不要贪心
掌握方法和思维方式,更重要

