兰色精灵 发表于 2015-1-18 11:19:38

发布一篇经由过程Java泛型完成数组排序和搜刮的通用办法

市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
上面会商的是数组的排序和搜刮功效,而一个通用办法则是完成Comparable接口的办法,这个办法必要经由过程java泛型来完成。上面便慢慢解说为什么,和怎样经由过程Java泛型完成此类的通用办法。
怎样在java类中一些通用办法,出格是一些静态的工具办法?
好比,数组Arrays的sort、search等?
1.整数数组的按次压缩
public static int seqSearch(int[] arr, int first, int last, int target) {
    for (int i = first; i < last; i++)
        if (arr == target)
            return i;

    return -1;
}
1.1对下面的办法举行笼统,开始让我们想到就是,利用java的Object的援用,来完成通用办法
public static int seqSearch(Object[] arr, int first, int last, Object target) {
    for (int i = first; i < last; i++)
        if (arr.equals(target))
            return i;

    return -1;
}
2.1如许看来仿佛Object的援用仿佛十分便利,并且第二个按次搜刮可使用到float,double,String等等。假如我们要进一步研讨就会呈现成绩
public static void selectionSort(int[] arr) {
    int n = arr.length, smallIndex = 0;
    for (int i = 0; i < n; i++) { // 遍历array数组
        smallIndex = i;
        for (int j = i + 1; j < n; j++)
            if (arr > arr) // 选择最小的索引j
                smallIndex = j;
        // if (smallIndex != i) {
        exchange(arr, i, smallIndex);// 互换array与 min(array)
        // }
    }
}
2.2下面的代码是一个按次排序的算法,若果我们要写一个通用办法,就必需把object范例强迫装换为一个完成Comparable接口的办法。
JVM在处置范例强迫装换的时分就会,抛出一个告诫:uncheckcast
@SuppressWarnings("unchecked")
public static void selectionSort(Object[] arr) {

    int n = arr.length, smallIndex = 0;
    for (int i = 0; i < n; i++) { // 遍历array数组
        smallIndex = i;
        for (int j = i + 1; j < n; j++)
            if (((Comparable<Object>)arr).compareTo(((Comparable<Object>)arr)) > 0) // 选择最小的索引j
                smallIndex = j;
        // if (smallIndex != i) {
        exchange(arr, i, smallIndex);// 互换array与 min(array)
        // }
    }
}
有此能够看出利用Object援用来处置通用成绩,当利用实参假如没有完成Comparable接口,编译器会抛出一个castClassException的运转时非常。如许的程序是不平安的。
3.1利用Object援用来泛化一个算法(如按次搜刮)。经由过程利用数组的Object援用和方针值,只需数据范例完成了equals办法,算法中要对照巨细的数据类必需完成Comparable接口,如今我们来用java泛型来办理这个成绩
public static <T extends Comparable<? super T>> void selectionSort(T[] arr){
    int n = arr.length;
    int smallIndex;
    for (int i = 0; i < n-1; i++) {
        smallIndex=i;
        for (int j = i+1; j < n; j++)
            if (arr.compareTo(arr)<0)
                smallIndex=j;
        exchange(arr, smallIndex, i);
    }
}
在Arrays类中的静态办法selectionSort(),这个办法处置的是整数范例。要用泛型版原本完成这个算法,因为要泛型范例数组T[]中的两个元素要举行对照,以是传送实参的对象范例或其超类必需完成Comparable接口。

认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,

小女巫 发表于 2015-1-20 20:28:23

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

爱飞 发表于 2015-1-21 11:53:46

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

再现理想 发表于 2015-1-22 22:44:17

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

小魔女 发表于 2015-1-31 13:01:03

是一种语言,用以产生「小应用程序(Applet(s))

admin 发表于 2015-2-2 06:48:09

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

因胸联盟 发表于 2015-2-7 16:54:00

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

乐观 发表于 2015-2-7 22:46:36

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

飘灵儿 发表于 2015-2-12 06:21:40

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

若相依 发表于 2015-2-18 16:35:34

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

老尸 发表于 2015-2-19 04:32:58

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

透明 发表于 2015-3-6 13:01:40

是一种突破用户端机器环境和CPU

第二个灵魂 发表于 2015-3-11 21:27:20

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

再见西城 发表于 2015-3-19 14:15:25

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

灵魂腐蚀 发表于 2015-3-28 08:21:04

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页: [1]
查看完整版本: 发布一篇经由过程Java泛型完成数组排序和搜刮的通用办法