梦想帝国

音乐,程序

 

2012年10月28日

用最少的循环次数求出两个数组中的相同元素

问题:有两个长度分别为M和N的数组,用最少的循环次数求出他们中的相同元素。
分析:用容器来解决。将这两个数组分别放在两个ArrayList中,再调用ArrayList的retainAll方法即可。
        A.retainAll(B):从A集合中删除B集合中不包含的元素.
实现代码如下:

package com.miaojian.li;

import java.util.ArrayList;
import java.util.Collection;

public class FindFromArray {

 
    public static void main(String[] args) {

    int[] array1={1,2,3,4,5,6,7};
    int[] array2={2,4,6,8,10,1};
    Collection c1=new ArrayList();
    Collection c2=new ArrayList();
  
    for(int i=0;i<array1.length;i++)    //将array1添加到c1中
    {
        c1.add(array1[i]);
    }
    for(int i=0;i<array2.length;i++)   //将array2添加到c2中
   {
        c2.add(array2[i]);
   }
   c1.retainAll(c2);          //从c1集合中删除c2集合中不包含的元素
   System.out.println(c1);
   }
}
因此总的循环次数是M+N
结果如下 :

[1, 2, 4, 6]

posted @ 2012-10-30 22:34 天鹰之翼 阅读(314) | 评论 (1)编辑 收藏

用递归的方法列出文件目录结构

package com.miaojian.li;

import java.io.File;

public class FileList {
 
    public static void main(String[] args) {
  
    File f= new File("d:/software");//待列出的文件目录
    tree(f,0);
    }
    private static void tree(File f, int level)
    {
        String preStr="";
  
        for(int i=0;i<level;i++)
        {
            preStr+="    ";
        }
        File[] childs=f.listFiles();
        for(int i=0;i<childs.length;i++)
       {
           System.out.println(preStr + childs[i].getName());
           if(childs[i].isDirectory())
           tree(childs[i],level+1);
       }
   }

}
结果如下图:

DataBase
    Mysql
        mysqltoolwin32.rar
        MySQL_5.5.20_win32_XiaZaiBa.zip
    Oracle
        Oracle_client_win32.zip
        Toad DBA Suite for Oracle 10.5 Commercial.exe
    SqlServer
        Power Design
            powerdesigner125_eval.exe
        SQL Server2000
            PERSONAL
                AUTORUN.EXE
                AUTORUN.INF
                AUTORUN.INI
                BOOKS

 


posted @ 2012-10-30 11:59 天鹰之翼 阅读(121) | 评论 (0)编辑 收藏

测试static修饰的方法是否可以被复写

package com.miaojian.li;
//测试static修饰的方法是否可以被复写。
public class TT {

 public static void getName()
 {
  System.out.println("TT");
 }
 public static void main(String[] args) {
  
  TT tt=new TT();
  tt.getName();
 }
}

class T extends TT
{
 public static void getName()
 {
  System.out.println("T");
 }
}


运行父类,得到的结果为:TT
运行子类,得到的结果为:TT

证明staic修饰的方法不能被复写。

posted @ 2012-10-29 21:48 天鹰之翼 阅读(143) | 评论 (0)编辑 收藏

Java中类变量和实例变量的区别

类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加static 的变量;
区别在于:
    类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
例:

class A{
    static  int a = 0; //类变量
    public int b = 0; //实例变量
}

public class Test{
    public static void main (String[] args){
        A a1 = new A();
        A a2 = new A();
        a1.a = 3;  // 等同于 A.a = 3;
        a1.b = 4 ;
        System.out.println(a2.a); //结果为3
        //类变量是针对所有对象的,所以a1改变a,a2的a也改变
        System.out.println(a2.b); //结果为0
        //实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
    }
}

posted @ 2012-10-28 21:52 天鹰之翼 阅读(157) | 评论 (0)编辑 收藏

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜