`
edr_
  • 浏览: 169840 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java中TreeSet合并重复数据

    博客分类:
  • J2SE
阅读更多
TreeSet与HashSet之间的区别:
TreeSet会自动按自然排序法给元素排序,相应的性能会差一点。而HashSet是根据元素的hashCode自动给元素排序的,如果我们不需要使用排序功能,则应该使用HashSet。
相应的使用TreeSet的对象需要实现Comparable接口,并重写compareTo方法。
package com.test;

public class T implements Comparable<T>{
	private int t_id;
	private String t_name;
	T(int id,String name) {
		this.setT_id(id);
		this.setT_name(name);
	}
	public int getT_id() {
		return t_id;
	}
	public void setT_id(int t_id) {
		this.t_id = t_id;
	}
	public String getT_name() {
		return t_name;
	}
	public void setT_name(String t_name) {
		this.t_name = t_name;
	}
	public int compareTo(T o) {
		if (this.getT_id()<o.getT_id()) {
			return -1;
		}if (this.getT_id()>o.getT_id()) {
			return 1;
		}else {
        //如果t_id相等的话就无法添加
			return 0;
		}
	}
	
}
package com.test;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;


public class Test_Set {
	
	public static void main(String[] args) {
		T t0=new T(4,"t0000");
		T t1=new T(2,"t1111");
		T t2=new T(3,"t2222");
		Set<T> set=new TreeSet();
		set.add(t0);
		set.add(t1);
		set.add(t2);
		System.out.println(set.size());
		for (Iterator iterator = set.iterator(); iterator.hasNext();) {
			T t = (T) iterator.next();
			System.out.println("value="+t.getT_id());
		}
	}
	
}
输出结果:
3
value=2---t1111
value=3---t2222
value=4---t0000

合并重复数据:
当出现重复数据时不添加,但是在更改重复数据的内容-类似于网购:如果你添加相同的订单,它只会在数量上加1而不是添加多一条记录(个人理解,至于真正的网购是怎么处理的我也不清楚)。
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class T implements Comparable<T>{
	private int t_id;
	private int t_num;
	private String t_name;
	T(){
	}
	T(int id,int num,String name) {
		this.setT_id(id);
		this.setT_num(num);
		this.setT_name(name);
	}
	public int getT_id() {
		return t_id;
	}
	public void setT_id(int t_id) {
		this.t_id = t_id;
	}
	public int getT_num() {
		return t_num;
	}
	public void setT_num(int t_num) {
		this.t_num = t_num;
	}
	public String getT_name() {
		return t_name;
	}
	public void setT_name(String t_name) {
		this.t_name = t_name;
	}
	public int compareTo(T o) {
		if (this.getT_name().equals(o.getT_name())) {
//重复不添加,只修改其中的num值--o为set中存在的对象
			o.setT_num((this.getT_num())+o.getT_num());
			return 0;
		}else {
//固有排序
			if (this.getT_id()<o.getT_id()) {
				return -1;
			}
			if (this.getT_id()>o.getT_id()) {
				return 1;
			}
			else {
				//如果t_id相等的话就无法添加
				return 0;
			}
		}
	}
	public static void main(String[] args) {
		T t0=new T(0,1,"t0000");
		T t1=new T(1,1,"t1111");
		T t2=new T(2,1,"t2222");
		T t2_add=new T(2,9,"t2222");
		Set<T> set=new TreeSet();
		set.add(t0);
		set.add(t1);
		set.add(t2);
		set.add(t2_add);
		System.out.println(set.size());
		for (Iterator iterator = set.iterator(); iterator.hasNext();) {
			T t = (T) iterator.next();
			System.out.println("value="+"---"+t.getT_id()+"---"+"数量:"+t.getT_num()+"---"+t.getT_name());
		}
	}
}
输出结果:
3
value=---0---数量:1---t0000
value=---1---数量:1---t1111
value=---2---数量:10---t2222    //原来数量为1的,后来加了一条数量为9的数据



分享到:
评论

相关推荐

    用java的TreeSet写的一个求并集算法

    在Java编程中,集合框架是处理数据的重要工具,而`TreeSet`作为其中之一,它是一个有序、不包含重复元素的集合。本知识点主要探讨如何利用Java的`TreeSet`类来实现两个集合的并集算法。 `TreeSet`是基于红黑树(Red...

    java 去除重复元素

    在Java编程中,处理数据集合时,我们常常会遇到去除重复元素的需求。这可能是为了保持数据的唯一性,或者为了优化存储和计算效率。本文将详细介绍如何在Java中去除重复元素,主要关注数组和列表这两种常见数据结构。...

    Java语言程序设计与数据结构(基础篇)第9章课后习题代码chapter9.rar

    在本压缩包“chapter9.rar”中,包含的是关于Java语言程序设计与数据结构基础篇的第9章课后习题代码。这个章节通常会深入探讨数据结构与算法,这是编程学习中的核心部分,特别是对于Java这样的面向对象编程语言而言...

    JAVA语言版_数据结构与算法(内含源代码)

    6. **树**:分层数据结构,包括二叉树、平衡树(AVL树、红黑树)、B树等,Java中的`TreeMap`和`TreeSet`是基于红黑树实现的。 7. **图**:由顶点和边构成,表示对象之间的关系,适用于网络、路径搜索等问题。 8. *...

    数据结构(Java版)

    Java中的`java.util.TreeSet`和`java.util.TreeMap`实现了红黑树,提供了高效的数据查找、排序和操作。 6. 哈希表:哈希表通过哈希函数将键映射到数组索引,实现快速查找。Java中的`java.util.HashMap`和`java.util...

    Java数据结构和算法

    根据给定的信息,“Java数据结构和算法”这一标题与描述虽然没有提供具体的内容,但从标签“Java 数据结构 算法”以及部分提及的技术词汇来看,我们可以推断出这篇文章主要聚焦于Java编程语言中的数据结构与算法应用...

    java中关于集合的操作

    在Java编程语言中,集合框架是处理对象组的重要工具,它提供了一种高效、灵活的方式来存储和操作数据。本文将深入探讨Java中的集合操作,并结合PPT(虽然这里没有提供具体的PPT内容,但通常这样的资源会包含示例、...

    JAVA数据结构

    10. 散列集和有序集:`java.util.HashSet`提供了无序不重复元素的集合,而`java.util.TreeSet`提供了有序的集合,两者都利用了哈希表和树结构。 这些数据结构的算法包括排序(如冒泡排序、选择排序、插入排序、快速...

    java数据结构算法www.ecjava.net

    Java中提供了TreeSet和TreeMap,它们基于红黑树实现,提供了高效的查找、插入和删除操作。 5. 图:图是由节点(顶点)和边构成的数据结构,用于表示对象之间的关系。Java中没有内置的图数据结构,但可以使用图的...

    java字符串的合并

    `TreeSet`是Java集合框架中的一种,它是一个有序且不包含重复元素的集合。`TreeSet`内部使用红黑树数据结构,可以提供高效的插入、删除和查找操作。以下是代码的详细解释: 1. 导入所需库:`import java.util.*;`...

    java数据结构和算法

    在IT领域,尤其是在软件开发与计算机科学中,Java数据结构和算法是不可或缺的基础知识。数据结构是指在计算机中存储、组织数据的方式,而算法则是解决特定问题的一系列步骤。掌握这些概念对于提升编程效率、优化代码...

    数据结构(java版)(第二版)[叶核亚编著][程序源代码]

    在Java编程语言中实现数据结构,可以让我们更好地理解和利用Java的特性来优化算法的性能。《数据结构(Java版)(第2版)》由叶核亚编著,提供了丰富的程序源代码,为读者深入理解数据结构的实现细节提供了实践平台...

    Java集合Collection、List、Set、Map使用详解

    Java集合框架是Java编程语言中不可或缺的部分,它提供了一种高效管理对象的方式,尤其是在处理大量数据时。本文将深入解析Java集合中的Collection、List、Set和Map,包括它们的使用方法、实现原理以及如何进行排序。...

    Apress的《Java Collections》

    HashSet和TreeSet都是无序的不重复元素集合,但TreeSet按照元素的自然顺序或自定义比较器进行排序。HashMap则是一种基于哈希表的键值对存储结构,提供快速的插入、删除和查找操作。 接着,书中会详细探讨...

    [java程序设计与数据结构(第2版)]一书源码

    - 搜索算法:如线性搜索、二分搜索、深度优先搜索(DFS)、广度优先搜索(BFS)等,用于在数据中查找特定元素。 - 树遍历:前序遍历、中序遍历、后序遍历,以及层次遍历等,用于访问树的所有节点。 - 动态规划:...

    Java习题六.docx

    本资源摘要信息涵盖了 Java 中的集合框架,包括 TreeSet、List、Set、Map 等集合类的使用和特性。同时,涵盖了 Lambda 表达式、Stream 接口、 Iterator 等概念。 1. 在创建 TreeSet 对象时,可以传入自定义比较器,...

Global site tag (gtag.js) - Google Analytics