迭代器中set的使用
今天对迭代器中的set方法进行了一下简单的使用,由于之前使用过list方法,所以将他与list进行了一下对比。
list中加入对象时不会进行查重,也就是只要是一个符合的对象就可以加到list中,而对于set来说他是一个不能有重复的集合,会对其进行一个查重。另外两种集合对排序的方法也是不一样的,对于list来说,你可以先将其存在集合中,然后调用方法,对list进行一次排序,而对于set来说,他是在用TreeSet集合在向集合的添加的过程中就做了一个简单的排序,第一次使用这种方法,对其中的具体原理还是不太了解,感觉在使用过程中主要就是这些区别。
以下是两种方法的使用
package iterator; import java.util.ArrayList; import java.util.Collections;
import java.util.Comparator; import java.util.List;
import java.util.Set;
import java.util.TreeSet; import javax.net.ssl.SNIHostName;
public class Client { public static void main(String[] args) { List<Student> list = listStudent(); System.out.println("使用list进行遍历");
listASC(list);
listDESC(list);
setASC();
setDESC(); } //将数组存储在set中
public static void setASC()
{
System.out.println("使用set进行顺序输出");
Set<Student> set = new TreeSet<Student>(new setCompare()) ;
set.add(new Student(3, "李四", 19));
set.add(new Student(2, "张", 18));
set.add(new Student(5, "李", 19));
set.add(new Student(1, "王五", 18));
set.add(new Student(6, "赵柳", 19)); for(Student stu: set)
{
System.out.println("学号:" + stu.getId() + " 姓名:" + stu.getName() + " 年龄:" + stu.getAge());
} } //将数组存储在set中
public static void setDESC()
{
System.out.println("使用set进行逆序输出");
Set<Student> set = new TreeSet<Student>(new setCompareDESC()) ;
set.add(new Student(3, "李四", 19));
set.add(new Student(2, "张", 18));
set.add(new Student(5, "李", 19));
set.add(new Student(1, "王五", 18));
set.add(new Student(6, "赵柳", 19)); for(Student stu: set)
{
System.out.println("学号:" + stu.getId() + " 姓名:" + stu.getName() + " 年龄:" + stu.getAge());
} } //将数组存储在List容器中
public static List<Student> listStudent()
{
List<Student> list = new ArrayList<Student>();
list.add(new Student(3, "李四", 19));
list.add(new Student(2, "张", 18));
list.add(new Student(5, "李", 19));
list.add(new Student(1, "王五", 18));
list.add(new Student(6, "赵柳", 19));
return list;
} public static void listASC(List<Student> list)
{
System.out.println("按照学号顺序输出");
Collections.sort(list,new Comparator<Student>() { @Override
public int compare(Student o1, Student o2) {
// TODO 自动生成的方法存根
if (o1.getId() > o2.getId()) {
return 1;
}
if (o1.getId() == o2.getId()) {
return 0;
}
return -1;
} }); for(Student stu: list)
{
System.out.println("学号:" + stu.getId() + " 姓名:" + stu.getName() + " 年龄:" + stu.getAge());
} } public static void listDESC(List<Student> list)
{
System.out.println("按照学号逆序输出");
Collections.sort(list,new Comparator<Student>() { @Override
public int compare(Student o1, Student o2) {
// TODO 自动生成的方法存根
if (o1.getId() < o2.getId()) {
return 1;
}
if (o1.getId() == o2.getId()) {
return 0;
}
return -1;
}
}); for(Student stu: list)
{
System.out.println("学号:" + stu.getId() + " 姓名:" + stu.getName() + " 年龄:" + stu.getAge());
}
} }
class setCompare implements Comparator<Student>{ @Override
public int compare(Student o1, Student o2) { return o1.getId() - o2.getId();
} } class setCompareDESC implements Comparator<Student>{ @Override
public int compare(Student o1, Student o2) { return o2.getId() - o1.getId();
} }
其中用到的Student类
package iterator;
public class Student {
int id;
String name;
int age;
public Student(int id,String name,int age) {
// TODO 自动生成的构造函数存根
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
由于没有具体的数据,所以在处理过程中,我就直接使用了固定的赋值格式了。

迭代器中set的使用的更多相关文章
- Day07_39_集合中的remove()方法 与 迭代器中的remove()方法
集合中的remove()方法 与 迭代器中的remove()方法 深入remove()方法 iterator 中的remove()方法 collection 中的remove(Object)方法 注意 ...
- 关于迭代器中IEnumerable与IEnumerator的区别
首先是IEnumerable与IEnumerator的定义: 1.IEnumerable接口允许使用foreach循环,包含GetEnumerator()方法,可以迭代集合中的项. 2.IEnumer ...
- 迭代器中next()的用法
>>> g = (x ** 2 for x in range(10)) >>> next(g) 0 >>> next(g) 1 >>& ...
- golang中的那些坑之迭代器中的指针使用
今天在编写代码的时候,遇到了一个莫名其妙的错误,debug了半天,发现这是一个非常典型且易犯的错误.记之 示例代码: package main import "fmt" type ...
- Php-SPL库中的迭代器类详解(转)
SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...
- C#中foreach语句的迭代器实现机制
C#中的foreach语句可用于循环遍历某个集合中的元素,而所有的只要支持了IEnumerable或IEnumerable<T>泛型接口的类型都是可以 用foreach遍历的.其具体的遍历 ...
- ES6中的迭代器(Iterator)和生成器(Generator)
前面的话 用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简 ...
- 深入理解Java中的迭代器
迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 概述 Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比如ArrayList.Li ...
- Lua中的迭代器与泛型for
[前言] 迭代器就是一种可以遍历一种集合中所有元素的机制,在Lua中,通常将迭代器表示为函数.每调用一次函数,就返回集合中的“下一个”元素.每个迭代器都需要在每次成功调用之后保存一些状态,这样才能知道 ...
随机推荐
- c++简单实现二叉树
专业术语: 节点 父节点 根节点 子孙 堂兄弟 深度: 从根节点到最底层节点的层数称为深度 叶子节点: 没有子节点的节点称为叶子节点 非终端节点: 实际就是非叶子节点 度: 子节点的个数称为度 树的分 ...
- $Poj1821\ Fence\ $单调队列优化$DP$
Poj Acwing Description 有N块木板等待被M个工匠粉刷,每块木板至多被刷一次.第i个工匠要么不粉刷,要么粉刷包含木块Si的,长度不超过Li的连续的一段木板,每粉刷一块可以得到P ...
- 1064 朋友数 (20 分)C语言
如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 ...
- Vuex入门实践(上)
一.前言 vuex被称为是专为vue应用程序开发的的状态管理模式.它的作用使用一句话描述就是:让组件之间可以共享数据 话不多少,先抛开概念,我们写一个简单的示例感受一波. 二.项目开发环境 项目开发环 ...
- 用python做推荐系统(一)
一.简介: 推荐系统是最常见的数据分析应用之一,包含淘宝.豆瓣.今日头条都是利用推荐系统来推荐用户内容.推荐算法的方式分为两种,一种是根据用户推荐,一种是根据商品推荐,根据用户推荐主要是找出和这个用户 ...
- 结合docker发布后端项目(基于gradle包管理)的shell脚本
结合docker发布后端项目(基于gradle包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理) 目前主流的 ...
- Spring MVC系列之模型绑定(SpringBoot)(七)
前言 上一节我们在SpringBoot中启用了Spring MVC最终输出了HelloWorld,本节我们来讲讲Spring MVC中的模型绑定,这个名称来源于.NET或.NET Core,不知是否恰 ...
- schedule of 2016-10-09~2016-10-16(Sunday~Sunday)——1st semester of 2nd Grade
most important things to do 1.prepare for toefl 2.joint phd preparations 3.ieee trans thesis to writ ...
- 查找2-n之间素数的个数
题目描述 查找2-n之间素数的个数.n为用户输入值.素数:一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数.如2,3,5,7,11,13,17…. 输入 整数n 输出 2-n ...
- js实现类选择器和name属性选择器
jQuery的出现,大大的提升了我们操作dom的效率,使得我们的开发更上一层楼,如jQuery的选择器就是一个很强大的功能,它包含了类选择器.id选择器.属性选择器.元素选择器.层级选择器.内容筛选选 ...