首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

模式-“里氏替换原则”

里氏替换原则是,同组的有类的两个子类,在使用子类A这个地方(方法/属性)您可以使用子类 B代替.对于面向接口编程,我只需要确保同样的行为代码;基类的所有子类必须全部 实现,换过来,子类的方法基类不一定都有; 如果:有一个基类Base;其子类是Concrete;那么method(Base b)的调用能够转换成 method(Concrete c); 策略模式:一般,我们把解决某个问题的方法称为一个”算法”,而把解决一类问题的算法封装 成一个接口,那么实现算法的多种方式作为子类;在某个时候,在调用中我们使用算法A替换 算法B,这就是策略模式在里氏代换原则中的应用; ***************策略模式************************************ >准备一组算法,并将每个封装起来使的他们能够互换.

02

2018-12-15 LintCode LeeCode刷题指南 part2

|270|Missing Number.java|Easy|Java|[Array, Bit Manipulation, Math]|| |271|LRU Cache.java|Hard|Java|[Design, Hash Table, Linked List]|| |272|Remove Duplicates from Sorted Array.java|Easy|Java|[Array, Two Pointers]|| |273|Remove Duplicates from Sorted Array II.java|Medium|Java|[Array, Two Pointers]|| |274|Remove Duplicates from Sorted List.java|Easy|Java|[Linked List]|| |275|Remove Duplicates from Sorted List II.java|Medium|Java|[Linked List]|| |276|QuickSort.java|Medium|Java|[Quick Sort, Sort]|| |277|MergeSort.java|Medium|Java|[Merge Sort, Sort]|| |278|Longest Word in Dictionary.java|Easy|Java|[Hash Table, Trie]|| |279|Binary Tree Level Order Traversal.java|Medium|Java|[BFS, DFS, Tree]|| |280|Binary Tree Level Order Traversal II.java|Medium|Java|[BFS, Tree]|| |281|Binary Tree Longest Consecutive Sequence II.java|Medium|Java|[DFS, Divide and Conquer, Double Recursive, Tree]|| |282|Binary Tree Maximum Path Sum.java|Hard|Java|[DFS, DP, Tree, Tree DP]|| |283|Path Sum.java|Easy|Java|[DFS, Tree]|| |284|Path Sum II.java|Easy|Java|[Backtracking, DFS, Tree]|| |285|Path Sum III.java|Easy|Java|[DFS, Double Recursive, Tree]|| |286|Rotate String.java|Easy|Java|[String]|| |287|Combinations.java|Medium|Java|[Backtracking, Combination, DFS]|| |288|Combination Sum IV.java|Medium|Java|[Array, Backpack DP, DP]|| |289|Binary Tree Right Side View.java|Medium|Java|[BFS, DFS, Tree]|| |290|Binary Tree Maximum Path Sum II.java|Medium|Java|[DFS, Tree]|| |291|Rotate List.java|Medium|Java|[Linked List, Two Pointers]|| |292|Basic Calculator.java|Hard|Java|[Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]|| |293|Longest Consecutive Sequence.java|Hard|Java|[Array, Hash Table, Union Find]|| |294|Binary Tree Longest Consecutive Sequence.java|Medium|Java|[DFS, Divide and Conquer, Tree]|| |295|Number of Connected Components in an Undirected Graph.java|Medium|Java|[BFS, DFS, Graph, Union Find]|| |296|Next Closest Time.java|Medium|Java|[Basic Implementation, Enumeration, String]|| |297|Serialize and Deseriali

02

李兴华Java核心技术讲解--类集框架笔记

3.1、认识类集(理解) 如果现在要想保存多个对象,肯定使用对象数组完成,但是对象数组本身有一个最大的问题在于其数据的长度,所以后来使用了链表完成了动态对象数组的开发,可是链表的开发难度实在是很大,而且如果一个链表要想真正去使用,只依靠之前所编写的还不够,还需要进行一些代码的调优。 而在JDK 1.2之后正式引入了类集的概念,类集是一种动态的对象数组,属于各个数据结构的实现类,在整个类集之中主要的组成是一些核心的操作接口:Collection、List、Set、Map、Iterator、Enumeration。 3.2、单值保存的最大父接口:Collection(重点) 所谓的单值保存指的是每一次操作只会保存一个对象,就好像之前的链表程序一样,每一次只保存了一个对象,在Collection接口之中定义了如下的一些操作方法。 No. 方法名称 类型 描述 1 public boolean add(E e) 普通 数据增加 2 public void clear() 普通 清除数据 3 public boolean contains(Object o) 普通 查找数据是否存在 4 public boolean isEmpty() 普通 判断是否为空集合 5 public Iterator iterator() 普通 为Iterator接口实例化 6 public boolean remove(Object o) 普通 删除数据 7 public int size() 普通 取得集合的个数 8 public Object[] toArray() 普通 将集合变为对象数组 在Collection接口之中一共定义了15个方法,在所有的方法之中,只有两个方法最为常用:add()、iterator()。不过从开发上讲,很少会去直接使用Collection,都会使用Collection的两个子接口:List、Set。 3.3、允许重复的子接口:List(重点,80%) List是Collection的一个最为常用的子接口,首先这个接口的定义如下: public interface List extends Collection 但是List接口对Collection接口进行了大量的扩充,但是扩充之后的主要方法: No. 方法名称 类型 描述 1 public E get(int index) 普通 取得指定索引位置上的数据 2 public E set(int index, E element) 普通 修改指定索引位置上的数据 3 public ListIterator listIterator() 普通 为ListIterator接口实例化 但是以上的三个方法,只是针对于List接口起作用,而List接口有两个常用子类:ArrayList、Vector。 3.3.1、新的子类:ArrayList,95% ArrayList是List子接口使用最多的一个子类,而这个类的定义如下: public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable 按照面向对象的概念来讲,现在使用ArrayList主要的目的是为List接口实例化,所有的操作方法都以List接口为主。 范例:使用ArrayList进行List接口的功能验证 package cn.mldn.demo; import java.util.ArrayList; import java.util.List; public class TestDemo { public static void main(String[] args) throws Exception { List all = new ArrayList() ; all.add(“Hello”) ; all.add(“Hello”) ; // 内容重复了 all.add(“World”) ; for (int x = 0; x < all.size(); x++) { String str = all.get(x) ; // get()方法只有List接口有 System.out.print(str + “、”); } } } 在使用代码的时候可以发现,List集合之中即使存在了重复数据,也可以正常的保存,而且数据保存的顺序就是存入数据的顺序。 范例:使用List集合修改之前的程序 package cn.mldn.demo; import java.util.ArrayList; import java.util.List; interfac

00

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券