- 浏览: 99012 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
lin__nil:
...
eclipse-indigo 中 user libraries 自动部署 WEB-INF/lib 配置 -
biduone:
有用的
解决Myeclipse中编辑JS卡的问题 -
xy2401:
这样虽然更简单了,但是,不能说是自动部署,不过比起我去自己复制 ...
eclipse-indigo 中 user libraries 自动部署 WEB-INF/lib 配置
可泛型的Heap,方便使用。
Heap接口:
public interface Heap<T> { /** * return the top element of the heap * * @return top element */ Object get(); /** * remove the top element of the heap and return it the heap must be fixed. * * @return top element */ Object remove(); /** * reset the top element * * @param obj * the new top element */ void set(T obj); /** * add a element to the heap. if no comparator is set, the obj must be * implments comparable interface * * @param obj * the element to be added */ void add(T obj); /** * if the heap is empty return true; * * @return true if heap is empty,else false */ boolean isEmpty(); /** * clear the heap */ void clear(); }
AbstractHeap类:
public class AbstractHeap<T> implements Heap<T>{ private List<T> l = new ArrayList<T>(128); private Comparator<T> com; /* * 默认构造器 * 接受泛型的数组 */ public AbstractHeap(T[] elements) { init(elements); } /* * 带Comparator的构造器 * 如果com为null会抛出IllegalArgumentException */ public AbstractHeap(Comparator<T> com, T[] elements) { if (com == null) throw new IllegalArgumentException("compartor can't be null"); this.com = com; init(elements); } /* * 初始化Heap中的ArrayList */ private void init(T[] elements) { l.add(null); for (int i = 0; i < elements.length; i++) { add(elements[i]); } System.out.println("Queue length is : " + l.size()); System.out.println("Content is : " + l); } /* * 得到堆顶的元素 */ @Override public Object get() { return l.get(1); } /* * 移除堆顶端元素,并重新维护Heap */ @Override public T remove() { T toReturn = l.get(1); T ret = l.get(l.size() - 1); l.set(1, ret); l.remove(l.size() - 1); fixDown(1); System.out.println("Queue length is : " + l.size()); System.out.println("Content is : " + l); return toReturn; } /* * 检测Heap是否为空 */ @Override public boolean isEmpty() { return l.size() == 0; } /* * 情况Heap中所有元素 */ @Override public void clear() { l.clear(); } /* * 将堆顶元素替换,并重新维护Heap */ @Override public void set(T obj) { l.set(1, obj); fixDown(1); } /* * 向Heap中加入一个元素 */ @Override public void add(T obj) { l.add(obj); fixUP(l.size()); } /* * 比较器 */ protected int compare(int i, int j) throws NoComparableException { if (com != null) { return com.compare(l.get(i), l.get(j)); } else if (l.get(j) instanceof Comparable) { return ((Comparable) l.get(i)).compareTo(l.get(j)); } else { throw new NoComparableException( "Not implements Comparable interface."); } } /* * 比较器 */ protected int compare(T i, T j) throws NoComparableException { if (com != null) { return com.compare(i, j); } else if (i instanceof Comparable) { return ((Comparable) i).compareTo(j); } else { throw new NoComparableException( "Not implements Comparable interface."); } } /* * 向上维护 */ private void fixUP(int start) { int k = start - 1; T s = l.get(k); try { while (k != 1 && compare(l.get(k >> 1), s) <= 0) { l.set(k, l.get(k >> 1)); k >>= 1; } } catch (NoComparableException e) { e.printStackTrace(); } l.set(k, s); } /* * 向下维护 */ private void fixDown(int k) { T ret = l.get(k); int j = k; int r = j * 2; int size = l.size() - 1; while (r <= size) { try { if (r < size && compare(l.get(r + 1), l.get(r)) > 0) r++; if (compare(l.get(r), ret) < 0) break; } catch (NoComparableException e) { // TODO Auto-generated catch block e.printStackTrace(); } l.set(j, l.get(r)); j = r; r *= 2; } l.set(j, ret); } }
最小推,MinHeap:
public class MinHeap<T> extends AbstractHeap<T> { public MinHeap(T[] elements) { super(elements); } public MinHeap(Comparator<T> com, T[] elements) { super(com, elements); } /* * 注意两个参数比较的顺序 */ @Override protected int compare(int i, int j) throws NoComparableException { return super.compare(j, i); } @Override protected int compare(T i, T j) throws NoComparableException { return super.compare(j, i); } }
最大堆,MaxHeap:
public class MaxHeap<T> extends AbstractHeap<T> { public MaxHeap(T[] elements) { super(elements); } public MaxHeap(Comparator<T> com, T[] elements) { super(com, elements); } /* * 注意两个参数比较的顺序 */ @Override protected int compare(int i, int j) throws NoComparableException { return super.compare(i, j); } @Override protected int compare(T i, T j) throws NoComparableException { return super.compare(i, j); } }
发表评论
-
emacs auto-complete 无效
2015-03-26 20:50 1013emacs使用ac插件很平常,有时发现ac不可用,可能原因为 ... -
cscope 使用 -q 选项 搜索速度提升 100%
2013-10-09 22:07 869cscope的功能不再赘述,在这里cscope.source ... -
xubuntu 13.04 xsessionrc
2013-09-29 23:09 1014因为使用 emacs ,所以必须改建, 使用 xmodmap ... -
amix vim config
2013-08-25 00:19 14""""" ... -
VIM配置
2013-08-23 21:23 17" set compatible 兼容性 se ... -
el-get-self-update 无法使用 bug 修复
2013-03-27 15:56 1153el-get-bug Table of Conte ... -
Emacs中实现vim式简单查找
2013-03-27 15:52 1328Emacs中实现vim式简单查 ... -
emacs 使用 template
2012-10-21 19:05 1802折腾了一下午,总算搞好了。 首先是折腾 yasnippet, ... -
perl 实现查找内置 package
2012-10-19 10:33 1067其实这个功能 perldoc 与 cpan 都有,只不过学习p ... -
emacs 使用 auto-complete clang 实现 c++ 代码补全
2012-10-10 22:52 9536自从将 <CTRL> 与 <CAPS> ... -
eclipse link方式安装plugins时path问题
2012-05-02 19:34 1319在eclipse、myeclipse中安装插件时,现 ... -
eclipse-indigo 中 user libraries 自动部署 WEB-INF/lib 配置
2012-04-06 15:13 5602小清新的责任感上来了,果断放弃了一直使用的myec ... -
plsql 中文乱码解决
2012-03-28 12:11 1231一直没有找到好的解决办法,只能通过设置系统的环境变量来解决,个 ... -
jquery 淡进淡出的 BLINK 效果
2012-03-11 15:17 1332其实就是一段简单的代码了,但好长时间没自己写东西了,搬上来摆摆 ... -
应用SpringMVC时 JS等文件找不到错误
2012-03-07 21:48 1223方法一: 在web.xml中添加 <se ... -
Java中自带Observer模式运用
2012-02-22 15:16 1463使用Java中自带的Observer模式时,需要用到一下两个类 ... -
Struts2 中使用就静态方法,不会报错
2012-02-20 16:47 872在页面中使用 Struts 的静态方法调用时,如果 ... -
MyEclipse / Eclipse快捷键的导出和导入
2011-11-13 16:52 4483Eclipse 中为我们定义了许多方便的快捷键 ... -
解决Myeclipse中编辑JS卡的问题
2011-07-28 11:41 7001貌似编辑jsp时, 按下ctrl键会导致其联网去查tag提 ... -
MyEclipse8.5 关闭J2EE项目中的JavaScript验证
2011-07-24 13:47 1712MyEclipse中J2EE项目中的JavaScript验证, ...
相关推荐
* 泛型:用于实现JAVA程序的类型安全和可扩展性。 * lambda表达式:用于实现JAVA程序的函数式编程和事件处理。 Java框架和库 JAVA框架和库是JAVA语言的高级组件之一,包括Spring框架、MyBatis框架、Hibernate框架...
- 解答:Java内存分为堆(Heap)、栈(Stack)、方法区(Method Area)、本地方法栈(Native Method Stack)和程序计数器(Program Counter Register)。堆用于存储对象实例,栈用于存储基本类型和引用,方法区存储...
Java语言具有跨平台性、面向对象、分布式、动态、泛型等特点。 Java虚拟机(JVM) Java虚拟机(JVM)是Java语言的运行环境,负责解释和执行Java字节码。JVM是Java语言的核心组件,提供了平台独立性、内存管理和...
9. Java内存模型:Java的内存模型分为堆(heap)和栈(stack)。栈用于存储局部变量和方法调用,堆用于存储对象实例。Java有垃圾收集器来管理内存,自动回收不再被引用的对象所占用的内存。 10. Java继承与覆盖:...
文档中介绍了类加载器、反射的使用、注解等高级概念,这些都是在编写动态、灵活的Java应用程序时不可或缺的知识点。 ### Java新特性 随着Java版本的不断更新,引入了许多新的特性。文档中提到了JDK新特性,例如泛型...
Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、健壮性和安全性。在软件开发领域,尤其是企业级应用和互联网应用中,Java的重要性不言而喻。因此,对于求职者来说,掌握Java的核心概念和...
在 Java 编程中,英语单词是必不可少的一部分。了解这些单词的解释将有助于我们更好地理解和使用 Java 语言。下面是 Java 编程常用英语单词的解释: 1. Abstract(关键字):抽象的,指的是不能被实例化的类或接口...
Java通过方法重写(Override)和接口实现实现多态性,增强了程序的灵活性和可扩展性。 5. **接口(Interface)**:接口是一种完全抽象的类型,只包含常量和抽象方法。一个类可以实现多个接口,通过`implements`...
此外,Java SE 7还增强了类型推断(Type Inference)功能,使得泛型使用更加便捷;引入了Try-with-Resources语句,简化了资源关闭的处理;并且增强了并发编程的支持,如Fork/Join框架和新的并发集合类。 总结起来,...
* HashMap的实现原理 * HashMap源码剖析 IO流 * IO流基础 * File类 * 字节流 * 字符流 * 常用IO流 * NIO工具类 * AIO和序列化流 网络编程 * 网络编程基础 * HTTP、TCP、UDP、Socket * 计算机网络知识 * HTTPS...
- Java基础部分还可能涉及泛型、序列化、内部类、注解等深入话题。 了解并掌握这些知识点,对于Java后端开发者来说,不仅能在面试中表现出色,也能在实际工作中更好地解决性能问题和编写高质量的代码。
Java泛型的主要优点包括: - **类型安全**:编译期检查类型,避免运行时ClassCastException。 - **代码复用**:编写一次,适用于多种类型。 - **提高可读性**:增强代码的自文档化。 #### 15. 泛型擦除是什么意思...
- **泛型实现方法**:通过在类或接口声明时添加类型参数来实现泛型。例如,定义一个泛型类`Box<T>`,在实例化时通过传递具体的类型如`Box<String>`来确定`T`的实际类型。 #### 3. Java中静态变量的适用场景 静态...
10. Java泛型: - 泛型允许在编译时提供类型检查和类型安全,使得不同类型的集合可以实现同一个接口。 - 例如,List可以持有任何类型的对象,List只能持有String类型的对象。 11. Java集合框架中的线程安全和非...
10. **泛型**:Java泛型的引入增强了类型安全,面试官可能询问泛型的边界、通配符、类型擦除等概念。 11. **注解(Annotation)**:注解提供了一种元数据方式,面试官可能询问自定义注解的创建和使用,以及反射中...
以上只是Java编程领域的一部分关键知识点,实际的笔试题可能还会涉及更多的内容,例如枚举、泛型、并发编程、数据库操作、Spring框架等。对这些知识的掌握程度将直接影响到应聘者在面试和实际工作中的表现。
- **用途**:Java中的泛型允许在类、接口和方法中使用类型参数,从而实现类型安全的代码重用。 #### goto (保留字) 跳转 - **中文释义**:跳转 - **用途**:虽然`goto`是Java中的保留字,但实际上并未被用作关键字...
7. **高级特性**:讨论Java的一些高级特性,例如反射、注解、泛型等。 8. **工具与环境**:提供有关设置开发环境的信息,包括IDE选择、构建工具等。 9. **最佳实践与设计模式**:分享编写高质量代码的最佳实践和常用...
Java 5引入了泛型和自动装箱拆箱功能,极大地提高了代码的复用性和可读性。泛型允许编译器在编译阶段检查类型安全,并确保编译后的类文件不包含类型信息,从而减少运行时的类型转换开销。自动装箱是指将基本类型自动...