首页 新闻 赞助 找找看

java中对于int 和 List(集合) 在存储的时候是如何实现的?

0
悬赏园豆:10 [待解决问题]

今天在java方面的书籍,说到路径匹配,**多级匹配,*匹配任意字符串,就想通过自己的方式来写一个demo,能不能也实现这样的功能,那么看人家的源码 我像就应该比较好理解些。

下面贴上代码.

public void getFiles(String parentName,int count,List<File> fileList){
        File file=new File(parentName);
        if(file.isDirectory()){
            File [] childFile=file.listFiles(filter());
            for(File child:childFile){
                getFiles(child.getAbsolutePath(),count,fileList);
            }
        }else{
            ++count;
            fileList.add(file);
        }
    }
    
    
    public FileFilter filter(){
        return new FileFilter() {
            public boolean accept(File pathname) {
                if(pathname.getAbsolutePath().indexOf("jar")!=-1){
                    return true;
                }
                return false;
            }
        };
    }

在做测试的时候:

int count=0;
        List<File> fileList=new ArrayList<File>(); 
        new NetTest().getFiles("C:/eams/file",count,fileList);
        for(File file:fileList){
            System.out.println(file.getAbsolutePath()+"\t"+file.getName());
        }
        System.out.println(count);

 输出和我想的有些不同:
count  一直为 0 。

fileList 是有值得。

描述到这里,问题就来了,

对于int  和  List(集合)  在存储的时候是如何实现的?(一直想了解底层,不想当一辈子码农) 

自己也找了一些资料在看,但是都讲的不清不楚。所以求有人给详细解释下。

 

 

 

搬砖工奶爸的主页 搬砖工奶爸 | 初学一级 | 园豆:184
提问于:2016-07-21 16:05
< >
分享
所有回答(2)
1

int哪有底层,它只是一个数据类型而已,二进制10101这种机器码,除非它的包转类Integer,提供了一些方法,至于List只是一个接口,它有许多实现,常用的就是ArrayList,linkedlist,你可以百度一下他们的区别,一个数组存储,一个链表存储

[3] | 园豆:1174 (小虾三级) | 2016-07-21 19:35

我看了arrayList的底层四线,大部分的底层方法是navite的,这些方法基于jni,使用c/c++来写的 ,我在想链表添加操作的时候是把内存地址传进了,,而int类型,只是把值穿进去,没有传地址进去,因为刚开始学习c的时候,做值得交换必须要传地址或者引用才能进行值得交换(表象),

支持(0) 反对(0) 搬砖工奶爸 | 园豆:184 (初学一级) | 2016-07-22 11:45
0

int是基本数据类型,你可以理解成是最小单位,存储在栈内存或者说是非堆内存,不定时回收。

List是对象,你可以理解成是一种聚合单位,存储在堆内存,由GC回收。

实现原理的话,int我们不会去考虑。List的话可以分别考察下ArrayList和LinkedList的原理。

 

CyrusLeo | 园豆:220 (菜鸟二级) | 2016-07-23 15:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册