`
LQJ2711
  • 浏览: 5402 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Set使用基础以及该在什么地方使用?

 
阅读更多

 这次我主要说的是关于Set[集合]、Map[键值对]。

1、Set【集合】

      Java中的Set正好和数学上直观得集合[Set]的概念是相同。Set最大的特性就是不允许在其中存放的元素是重复的。根据这个特点,我们就可以使用Set这个接口来实现像商品种类的存储需求。Set可以被用来过滤在其他容器中存放的元素,从而得到一个没有包含重复新的集合。

      在这里主要说的是HashSet与TreeHash的基础使用。

 

      1)、HashSet:无序且是不重复的

import java.util.HashSet;
import java.util.Iterator;
public class HashSetText {
	public static void main(String[] args) {
		//创建集合,泛型可以是一个自定义对象,也可以是Java内置对象
		HashSet<String> ha = new HashSet<String>();
		//添加数据
		ha.add("BBB");
		ha.add("DDD");
		ha.add("AAA");
		ha.add("CCC");
		//添加与之前的重复,则不添加进去
		ha.add("AAA");
		
		//取出方式一:迭代器
		//将集合中的数据放入迭代器中遍历
		Iterator<String> iter=ha.iterator();
		//如果迭代器iter中没有元素就会返回false,就会跳出循环
		while(iter.hasNext()){
			//利用next方法逐个取得数据,并输出
			System.out.println(iter.next());
		}
		System.out.println("-----------------");
		//取出方式二:增强for
		//定义一个与集合中的数据类型相同的变量,用于临时存储数据,
		//该循环的实质:会跳到方式一,用方式一的方法输出
		for(String s:ha){
			//直接输出
			System.out.println(s);
		}
	}
}

     以下是HashSet的方法摘要:



 

       2)、TreeSet:有序且不重复

                            顺序可以是系统默认的自然顺序,也可以在泛型为自定义的对象是重写

     自定义的一个person类

public class person implements Comparable<person> {
	private String name;
	private int age;
	/**
	 * 构造方法
	 * @param name 姓名
	 * @param age 年龄
	 */
	public person(String name,int age){
		this.name=name;
		this.age=age;
	}
	/**
	 * 重写了输出方法
	 */
	@Override
	public String toString() {
		return name + ":" + age ;
	}
	/**
	 * 重写了比较器
	 */
	@Override
	public int compareTo(person p) {
		//根据姓名排序
		return this.age-p.age;
		//根据姓名排序
		//return this.name.compareTo(p.name);
	}
}

    主函数:

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

public class TreeSetText {
	public static void main(String[] args) {
		//创建集合,泛型可以是一个自定义对象,也可以是Java内置对象
		//这里是自定义对象,鉴于TreeSet的特性,可以重写比较器或者采用默认自然顺序排序
		TreeSet<person> ha = new TreeSet<person>();
		//添加数据
		ha.add(new person("BBB",22));
		ha.add(new person("DDD",30));
		ha.add(new person("AAA",20));
		ha.add(new person("CCC",21));
		//由于与之前的对象不是完全相同,故可以添加
		ha.add(new person("AAA",19));
		//由于与之前的对象是完全相同的,故不能添加
		ha.add(new person("AAA",20));

		//取出方式一:迭代器
		//将集合中的数据放入迭代器中遍历
		Iterator<person> iter=ha.iterator();
		//如果迭代器iter中没有元素就会返回false,就会跳出循环
		while(iter.hasNext()){
			//利用next方法逐个取得数据,并输出
			System.out.println(iter.next());
		}
		System.out.println("-----------------");
		//取出方式二:增强for
		//定义一个与集合中的数据类型相同的变量,用于临时存储数据,
		//该循环的实质:会跳到方式一,用方式一的方法输出
		for(person s:ha){
			//直接输出
			System.out.println(s);
		}
	}
}

     以下是TreeSet的方法摘要:



 



 

      以上需要注意的是HashSet适合不重复且没有顺序的数据。

                               TreeSet适合不重复且有顺序的数据

  • 大小: 48.5 KB
  • 大小: 43.9 KB
  • 大小: 23 KB
分享到:
评论

相关推荐

    as get set类生成工具

    4. 便于重构:当需要修改属性或添加验证逻辑时,只需要在一个地方更改即可。 总的来说,"as get set类生成工具"是ActionScript和Flex开发者的得力助手,它简化了类的创建过程,提高了开发效率,同时也确保了代码的...

    A Nonlinear Adaptive Level Set for Image Segmentation

    在图像中,弱边界是物体边界较模糊的部分,传统的水平集方法容易在这些地方丢失目标边界。该方法通过非线性自适应速度项,能够使曲线以合适的速率移动,既能够捕捉到目标的真实边界,又避免了边界泄漏。 3. 减少假...

    PyPI 官网下载 | constants_set-0.4.tar.gz

    在实际使用"constants_set"时,我们需要按照库提供的文档进行操作。这可能包括导入库,然后使用其提供的类、函数或装饰器来定义和管理常量。例如,如果库提供了`@constant`装饰器,我们可以这样使用: ```python ...

    K8S基础架构说明PDF说明 使用viso绘制

    标题中提到的“K8S基础架构说明PDF说明 使用viso绘制”,表明本文档是一份关于Kubernetes(简称K8S)的基础架构说明。使用Visio绘制的图形工具说明了Master节点与Node节点上各个组件的关系,以及它们之间的交互。这...

    ACCESS中使用SQL语句应注意的地方及几点技巧

    ### ACCESS中使用SQL...综上所述,在ACCESS中有效地使用SQL语句需要掌握基础知识、注意关键点以及灵活运用技巧。通过对SQL语句的深入了解和合理应用,不仅可以提高数据库应用程序的性能,还能增强其稳定性和安全性。

    中兴培训java基础ppt

    9. **包装类**:Java为每个基本类型提供了对应的包装类,如Integer、Double等,它们提供了额外的功能,并能在需要对象的地方使用基本类型。 10. **Java API**:Java标准库提供了一系列预先定义好的类和接口,如Math...

    01 Set up for Android Development

    完成基础设置后,你可以开始学习更多的Android开发知识,例如理解Activity和Intent的概念,学习布局设计,掌握数据存储方式,以及了解如何使用服务、广播接收器等组件。此外,还要关注Android的新特性,如Jetpack库...

    node router基础使用

    在Node.js中,我们可以手动创建路由,这在小规模项目或学习基础时很有用。下面我们将详细介绍如何实现这个过程。 首先,我们需要安装`http`模块,这是Node.js内置的模块,无需额外安装。创建一个新的Node.js项目,...

    《Java核心技术 卷1 基础知识 原书第8版》 PDF+高清+影印+全书签.rar

    在类库方面,《Java核心技术 卷1》涵盖了基础的集合框架,包括List、Set、Map等接口及其实现类的使用。还有输入/输出流系统,文件操作,以及网络编程的基础知识。此外,书中还会介绍线程和并发编程,这对于理解和...

    JAVA基础测试

    通过使用try-catch-finally语句块,开发者可以在可能出现错误的地方捕获并处理异常,而不是让程序突然崩溃。 Java集合框架是处理对象数组的一个强大工具,包括List、Set和Map接口,以及ArrayList、LinkedList、...

    Java基础学习17.pdf

    这使得实现该接口的类能够根据实际使用的类型进行定制。 泛型通配符: 泛型通配符允许我们在不指定具体类型的情况下使用泛型。常见的通配符有?,它可以代表任何类型。例如,我们可以有一个方法接受一个List&lt;?&gt;作为...

    ACCESS中使用SQL语句应注意的地方及几点技巧.pdf

    本文主要探讨了在Access中使用SQL语句时应注意的事项以及一些实用技巧。 首先,创建表是数据库的基础。在Access中,可以使用`CREATE TABLE`语句来定义表结构。例如: ```sql CREATE TABLE Tab1 ( ID Counter, ...

    java初级oop基础

    - `public`:在任何地方都可以访问。 - `protected`:在同一个包内或者子类可以访问。 - `default`(无修饰符):仅在同一个包内可以访问。 - `private`:仅在定义它的类中可以访问。 #### 九、静态成员 - **静态...

    Java基础学习资料

    使用`import`语句可以引入其他包中的类,以便在程序中使用。 四、异常处理 Java提供了异常处理机制,通过try-catch-finally语句块来捕获和处理程序运行时可能出现的错误。异常类通常继承自java.lang.Throwable,如...

    set.mm:逻辑和集合论的元数学源文件

    iset.mm可能使用直觉逻辑来探索更严格的数学基础,或者为了在不依赖经典逻辑的情况下表达集合论。 **HTML标签** 虽然"HTML"标签通常与网页相关的文件格式有关,但在这种上下文中,可能是表示"set.mm"和"iset.mm"的...

    spring boot整合redis基础工具类以及配置文件

    在Spring Boot应用中,你可以在任何需要使用Redis的地方注入`RedisUtil`,然后调用其提供的方法进行操作。例如: ```java @Service public class UserService { @Autowired private RedisUtil redisUtil; ...

    Analyzer 使用手冊

    用户可以定义命名集以及在报表中使用自定义命名集,甚至可以修改这些命名集来满足业务需要。 ### 用户界面操作与管理 用户可以通过 Analyzer 界面进行各种操作,包括创建新的樞紐分析表和决策分析图、设置数据源、...

    面试用Java基础方面问题以及答案

    Java 基础是每一位Java开发者都需要扎实掌握的知识点,特别是在面试中,这些基础知识往往会成为检验候选人技术功底的关键。以下是一些关于Java基础的重要知识点的详细解释: 1. **作用域**:Java中的访问修饰符包括...

Global site tag (gtag.js) - Google Analytics