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`类来实现两个集合的并集算法。 `TreeSet`是基于红黑树(Red...
在Java编程中,处理数据集合时,我们常常会遇到去除重复元素的需求。这可能是为了保持数据的唯一性,或者为了优化存储和计算效率。本文将详细介绍如何在Java中去除重复元素,主要关注数组和列表这两种常见数据结构。...
在本压缩包“chapter9.rar”中,包含的是关于Java语言程序设计与数据结构基础篇的第9章课后习题代码。这个章节通常会深入探讨数据结构与算法,这是编程学习中的核心部分,特别是对于Java这样的面向对象编程语言而言...
6. **树**:分层数据结构,包括二叉树、平衡树(AVL树、红黑树)、B树等,Java中的`TreeMap`和`TreeSet`是基于红黑树实现的。 7. **图**:由顶点和边构成,表示对象之间的关系,适用于网络、路径搜索等问题。 8. *...
Java中的`java.util.TreeSet`和`java.util.TreeMap`实现了红黑树,提供了高效的数据查找、排序和操作。 6. 哈希表:哈希表通过哈希函数将键映射到数组索引,实现快速查找。Java中的`java.util.HashMap`和`java.util...
根据给定的信息,“Java数据结构和算法”这一标题与描述虽然没有提供具体的内容,但从标签“Java 数据结构 算法”以及部分提及的技术词汇来看,我们可以推断出这篇文章主要聚焦于Java编程语言中的数据结构与算法应用...
在Java编程语言中,集合框架是处理对象组的重要工具,它提供了一种高效、灵活的方式来存储和操作数据。本文将深入探讨Java中的集合操作,并结合PPT(虽然这里没有提供具体的PPT内容,但通常这样的资源会包含示例、...
10. 散列集和有序集:`java.util.HashSet`提供了无序不重复元素的集合,而`java.util.TreeSet`提供了有序的集合,两者都利用了哈希表和树结构。 这些数据结构的算法包括排序(如冒泡排序、选择排序、插入排序、快速...
Java中提供了TreeSet和TreeMap,它们基于红黑树实现,提供了高效的查找、插入和删除操作。 5. 图:图是由节点(顶点)和边构成的数据结构,用于表示对象之间的关系。Java中没有内置的图数据结构,但可以使用图的...
`TreeSet`是Java集合框架中的一种,它是一个有序且不包含重复元素的集合。`TreeSet`内部使用红黑树数据结构,可以提供高效的插入、删除和查找操作。以下是代码的详细解释: 1. 导入所需库:`import java.util.*;`...
在IT领域,尤其是在软件开发与计算机科学中,Java数据结构和算法是不可或缺的基础知识。数据结构是指在计算机中存储、组织数据的方式,而算法则是解决特定问题的一系列步骤。掌握这些概念对于提升编程效率、优化代码...
在Java编程语言中实现数据结构,可以让我们更好地理解和利用Java的特性来优化算法的性能。《数据结构(Java版)(第2版)》由叶核亚编著,提供了丰富的程序源代码,为读者深入理解数据结构的实现细节提供了实践平台...
Java集合框架是Java编程语言中不可或缺的部分,它提供了一种高效管理对象的方式,尤其是在处理大量数据时。本文将深入解析Java集合中的Collection、List、Set和Map,包括它们的使用方法、实现原理以及如何进行排序。...
HashSet和TreeSet都是无序的不重复元素集合,但TreeSet按照元素的自然顺序或自定义比较器进行排序。HashMap则是一种基于哈希表的键值对存储结构,提供快速的插入、删除和查找操作。 接着,书中会详细探讨...
- 搜索算法:如线性搜索、二分搜索、深度优先搜索(DFS)、广度优先搜索(BFS)等,用于在数据中查找特定元素。 - 树遍历:前序遍历、中序遍历、后序遍历,以及层次遍历等,用于访问树的所有节点。 - 动态规划:...
本资源摘要信息涵盖了 Java 中的集合框架,包括 TreeSet、List、Set、Map 等集合类的使用和特性。同时,涵盖了 Lambda 表达式、Stream 接口、 Iterator 等概念。 1. 在创建 TreeSet 对象时,可以传入自定义比较器,...