这次我主要说的是关于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适合不重复且有顺序的数据
相关推荐
4. 便于重构:当需要修改属性或添加验证逻辑时,只需要在一个地方更改即可。 总的来说,"as get set类生成工具"是ActionScript和Flex开发者的得力助手,它简化了类的创建过程,提高了开发效率,同时也确保了代码的...
在图像中,弱边界是物体边界较模糊的部分,传统的水平集方法容易在这些地方丢失目标边界。该方法通过非线性自适应速度项,能够使曲线以合适的速率移动,既能够捕捉到目标的真实边界,又避免了边界泄漏。 3. 减少假...
在实际使用"constants_set"时,我们需要按照库提供的文档进行操作。这可能包括导入库,然后使用其提供的类、函数或装饰器来定义和管理常量。例如,如果库提供了`@constant`装饰器,我们可以这样使用: ```python ...
标题中提到的“K8S基础架构说明PDF说明 使用viso绘制”,表明本文档是一份关于Kubernetes(简称K8S)的基础架构说明。使用Visio绘制的图形工具说明了Master节点与Node节点上各个组件的关系,以及它们之间的交互。这...
### ACCESS中使用SQL...综上所述,在ACCESS中有效地使用SQL语句需要掌握基础知识、注意关键点以及灵活运用技巧。通过对SQL语句的深入了解和合理应用,不仅可以提高数据库应用程序的性能,还能增强其稳定性和安全性。
9. **包装类**:Java为每个基本类型提供了对应的包装类,如Integer、Double等,它们提供了额外的功能,并能在需要对象的地方使用基本类型。 10. **Java API**:Java标准库提供了一系列预先定义好的类和接口,如Math...
完成基础设置后,你可以开始学习更多的Android开发知识,例如理解Activity和Intent的概念,学习布局设计,掌握数据存储方式,以及了解如何使用服务、广播接收器等组件。此外,还要关注Android的新特性,如Jetpack库...
在Node.js中,我们可以手动创建路由,这在小规模项目或学习基础时很有用。下面我们将详细介绍如何实现这个过程。 首先,我们需要安装`http`模块,这是Node.js内置的模块,无需额外安装。创建一个新的Node.js项目,...
在类库方面,《Java核心技术 卷1》涵盖了基础的集合框架,包括List、Set、Map等接口及其实现类的使用。还有输入/输出流系统,文件操作,以及网络编程的基础知识。此外,书中还会介绍线程和并发编程,这对于理解和...
通过使用try-catch-finally语句块,开发者可以在可能出现错误的地方捕获并处理异常,而不是让程序突然崩溃。 Java集合框架是处理对象数组的一个强大工具,包括List、Set和Map接口,以及ArrayList、LinkedList、...
这使得实现该接口的类能够根据实际使用的类型进行定制。 泛型通配符: 泛型通配符允许我们在不指定具体类型的情况下使用泛型。常见的通配符有?,它可以代表任何类型。例如,我们可以有一个方法接受一个List<?>作为...
本文主要探讨了在Access中使用SQL语句时应注意的事项以及一些实用技巧。 首先,创建表是数据库的基础。在Access中,可以使用`CREATE TABLE`语句来定义表结构。例如: ```sql CREATE TABLE Tab1 ( ID Counter, ...
- `public`:在任何地方都可以访问。 - `protected`:在同一个包内或者子类可以访问。 - `default`(无修饰符):仅在同一个包内可以访问。 - `private`:仅在定义它的类中可以访问。 #### 九、静态成员 - **静态...
使用`import`语句可以引入其他包中的类,以便在程序中使用。 四、异常处理 Java提供了异常处理机制,通过try-catch-finally语句块来捕获和处理程序运行时可能出现的错误。异常类通常继承自java.lang.Throwable,如...
iset.mm可能使用直觉逻辑来探索更严格的数学基础,或者为了在不依赖经典逻辑的情况下表达集合论。 **HTML标签** 虽然"HTML"标签通常与网页相关的文件格式有关,但在这种上下文中,可能是表示"set.mm"和"iset.mm"的...
在Spring Boot应用中,你可以在任何需要使用Redis的地方注入`RedisUtil`,然后调用其提供的方法进行操作。例如: ```java @Service public class UserService { @Autowired private RedisUtil redisUtil; ...
用户可以定义命名集以及在报表中使用自定义命名集,甚至可以修改这些命名集来满足业务需要。 ### 用户界面操作与管理 用户可以通过 Analyzer 界面进行各种操作,包括创建新的樞紐分析表和决策分析图、设置数据源、...
Java 基础是每一位Java开发者都需要扎实掌握的知识点,特别是在面试中,这些基础知识往往会成为检验候选人技术功底的关键。以下是一些关于Java基础的重要知识点的详细解释: 1. **作用域**:Java中的访问修饰符包括...