自定义对象new一个匿名对象以后,removeElement 对象的操作瓶颈

原创 2013年12月05日 00:25:22

很多情况很多朋友写JAVA的时候都会自定义对象,但有时为了方便测试都会直接new一个匿名对象,比如当我们用到Vector这个类储存数据时,代码;

 

import java.util.Vector;

class vectorClient{
    private String name;
    private String ip;
    public vectorClient( String name , String ip ){
        this.name = name;
        this.ip = ip;
    }
    public String toString(){
        return “【”+name+”】”+ip;
    }

}

class test_vector{
    public static void main(String [] args){
        Vector<vectorClient> vt = new Vector<vectorClient>();
        vt.add( new vectorClient(“A1″,”127.0.0.1″));
        vt.add( new vectorClient(“A2″,”127.0.0.2″));
        vt.add( new vectorClient(“A3″,”127.0.0.3″));
        vt.add( new vectorClient(“A4″,”127.0.0.4″));

        //比如我要删除A4这个名字的vectorClient对象
        vt.removeElement( new vectorClient(“A4″,”127.0.0.4″) );
        System.out.println(vt);
    }
}

 

image

 

image

 

 

 

大家看到了,这样removeElement() 是没用的,因为每一个自定义的类都是默认继承java.lang.Oject这个类,这个类有一个方法是 equal() 。我们需要重写这个方法才能判断我们所比较的对象是否相等,如果不重写的话,系统是不会比较我们自定的 name 和 ip的,系统会根据这个对象所在的内存地址来作为比较。这样的话我们所构造的vectorClient对象就不能匿名,我们要删除的话只能如下代码:

 

vectorClient vc1 = new vectorClient(“A4″,”127.0.0.4″);

vt.add(vc1);

vt.removeElement(vc1);

 

这样的话就能删除了,因为用的是同一个引用就是同一个地址。

 

 

import java.util.Vector;

class vectorClient{
    private String name;
    private String ip;
    public vectorClient( String name , String ip ){
        this.name = name;
        this.ip = ip;
    }
    public String toString(){
        return “【”+name+”】”+ip;
    }

 

//在自定义的类加多下面这种方法

    public boolean equals(Object obj){
        vectorClient vc = (vectorClient)obj;
        if( vc.name.equals(name) && vc.ip.equals(ip) ){
            return true;
        }
        return false;
    }

}

class test_vector{
    public static void main(String [] args){
        Vector<vectorClient> vt = new Vector<vectorClient>();
        vt.add( new vectorClient(“A1″,”127.0.0.1″));
        vt.add( new vectorClient(“A2″,”127.0.0.2″));
        vt.add( new vectorClient(“A3″,”127.0.0.3″));
        vt.add( new vectorClient(“A4″,”127.0.0.4″));

        //比如我要删除A4这个名字的vectorClient对象
        vt.removeElement( new vectorClient(“A4″,”127.0.0.4″) );
        System.out.println(vt);
    }
}

 

image

 

重点:

 

image

 

当调用remove方法的时候,系统会自动调用equals()方法来检测这个对象是否为要删除的对象。

转载请注明:乔布尸 » 自定义对象new一个匿名对象以后,removeElement 对象的操作瓶颈




版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

黑马程序员—OC学习笔记—多个参数方法,匿名类,自定义对象初始化方法

———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流!———— 本节内容,OC多个参数方法,匿名类,自定义对象初始化方法

匿名内部类使用了一个在其外部定义的对象,为什么编译器会要求其参数引用是final呢

【摘】匿名内部类使用了一个在其外部定义的对象,为什么编译器会要求其参数引用是final呢 2010-05-19 20:33 是匿名内部类,不是普通的内部类。 原因如下: ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Objective-C 【类方法/对象方法-匿名类-new&alloc init区别】

——————————————————————————————————————————— 类方法   ①类方法:        + 开头的方法(定义的过程形式和对象方法一样,只不过 + 开头,这是唯...

android中 把json字符串从文件中去除,转换为一个 自定义对象的list中

主要类:(这里用到一个gson。要想libs导入gson的一个jar) public class FileConfigActivity extends Activity { // private ...

【redis,1】java操作redis: 将string、list、map、自定义的对象保存到redis中

【redis,1】java操作redis: 将string、list、map、自定义的对象保存到redis中

个人开源框架[对象属性自定义复制/快速操作文件/属性读取表达式]

做一些分享吧,我今天将部分写好的工具类以及一些工具包做一些分享,之前yih

java操作redis: 将string、list、map、自定义的对象保存到redis中

【redis,1】java操作redis: 将string、list、map、自定义的对象保存到redis中 转自:http://www.tuicool.com/articles/U7JNr...

学了面向对象,写了一个数据库类,以后就可以傻瓜化调用这个数据库了。

之前熟悉开发新闻管理系统,一直不知道分类管理怎么写。每次问百度,搜索结果都不一样,终于有一次,查到这套视频,中间有教开发CMS的题目。 我直接从开发CMS学起,开发分类管理功能我比较陌生,增删改查不...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)