java list中的对象去重原理

简介: /******************************************************************************* * * Copyright (c) Weaver Info Tech Co.
/******************************************************************************* 
 * 
 * Copyright (c) Weaver Info Tech Co. Ltd 
 * 
 * SessionInfo 
 * 
 * app.backend.model.SessionInfo.java 
 * TODO: File description or class description. 
 * 
 * @author: Administrator 
 * @since:  2014-5-26 
 * @version: 1.0.0 
 * 
 * @changeLogs: 
 *     1.0.0: First created this class. 
 * 
 ******************************************************************************/  

  
import java.io.Serializable;  
  
/** 
 * @author Administrator 
 * 
 */  
@SuppressWarnings("serial")  
public class SessionInfo implements Serializable{  
    private int id;  
    private String url;  
    public int getId() {  
  
        return id;  
    }  
    public void setId(int id) {  
  
        this.id = id;  
    }  
  
    public String getUrl() {  
  
        return url;  
    }

    @Override
    public String toString() {
        return "SessionInfo{" +
                "id=" + id +
                ", url='" + url + '\'' +
                '}';
    }

    public void setUrl(String url) {
  
        this.url = url;  
    }  
  
    /* (non-Javadoc) 
     * @see java.lang.Object#hashCode() 
     */  
    @Override  
 public int hashCode() {  
        return id;  
    }  
  
    /* (non-Javadoc) 
     * @see java.lang.Object#equals(java.lang.Object) 
     */  
    @Override  
 public boolean equals(Object o) {  
        if (o == null) {  
            return false;  
        } else {  
            if (o.getClass() != this.getClass()) {  
                return false;  
            } else {  
                final SessionInfo s = (SessionInfo) o;  
                return s.id == this.id;  
            }  
        }  
    }  
}  

 

import java.util.*;

public class HashCodeTest {  
  

  
    public static void main(String[] args){  


        SessionInfo sessionInfo1 = new SessionInfo();
        SessionInfo sessionInfo2 = new SessionInfo();
        sessionInfo1.setId(1);
        sessionInfo2.setId(1);
        sessionInfo1.setUrl("test");
        sessionInfo2.setUrl("test");


        SessionInfo mSessionInfo = null;                    //实体类对象
        Set<SessionInfo> sessionList = new HashSet<SessionInfo>();  //声明set集合对象
        final List<SessionInfo> list = new ArrayList<SessionInfo>();//声明list集合对象


        sessionList.add(sessionInfo1);//将对象添加到Set集合中
        sessionList.add(sessionInfo2);//将对象添加到Set集合中
        list.addAll(sessionList);//将数据添加到list集合对象

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }



}  

 

相关文章
|
1月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
70 0
|
1月前
|
Java
深入JavaSE:详解Java对象的比较。
总的来说,Java对象的比较就像海洋生物的比较,有外在的,有内在的,有面对所有情况的,也有针对特殊情况的。理解并掌握这些比较方式,就能更好地驾驭Java的世界,游刃有余地操作Java对象。
53 12
|
1月前
|
存储 安全 Java
深入探究Java中ThreadLocal的工作原理和用途
总结起来,ThreadLocal是Java多线程编程中一个非常有用的工具,通过为每个线程分配独立的变量副本,实现线程隔离,避免资
63 9
|
2月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
101 23
|
27天前
|
人工智能 JavaScript Java
Java反射机制及原理
本文介绍了Java反射机制的基本概念、使用方法及其原理。反射在实际项目中比代理更常用,掌握它可以提升编程能力并理解框架设计原理。文章详细讲解了获取Class对象的四种方式:对象.getClass()、类.class、Class.forName()和类加载器.loadClass(),并分析了Class.forName()与ClassLoader的区别。此外,还探讨了通过Class对象进行实例化、获取方法和字段等操作的具体实现。最后从JVM类加载机制角度解析了Class对象的本质及其与类和实例的关系,帮助读者深入理解Java反射的工作原理。
|
1月前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(4-1):悲观锁底层原理与性能优化实战
目录4. JVM字节码文件4.1. 字节码文件-组成4.1.1. 组成-基础信息4.1.1.1. 基础信息-魔数4.1.1.2. 基础信息-主副版本号4.1.2. 组成-常量池4.1.3. 组成-方法4.1.3.1. 方法-工作流程4.1.4. 组成-字段4.1.5. 组成-属性4.2. 字节码文件-查看工具4.2.1. javap4.2.2. jclasslib4.2.3. 阿里Arthas
35 0
|
2月前
|
Java 数据安全/隐私保护
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。
|
2月前
|
存储 缓存 Java
理解Java引用数据类型:它们都是对象引用
本文深入探讨了Java中引用数据类型的本质及其相关特性。引用变量存储的是对象的内存地址而非对象本身,类似房子的地址而非房子本身。文章通过实例解析了引用赋值、比较(`==`与`equals()`的区别)以及包装类缓存机制等核心概念。此外,还介绍了Java引用类型的家族,包括类、接口、数组和枚举。理解这些内容有助于开发者避免常见错误,提升对Java内存模型的掌握,为高效编程奠定基础。
131 0
|
12月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1204 1
|
11月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
164 1