集合第三节
来源:互联网 发布:磁力解析app源码 编辑:程序博客网 时间:2024/05/18 00:35
Set集合的遍历:
Ø 方式一:通过迭代器进行遍历
例如:
Iterator it=set.iterator();
//it.hasNext():判断迭代器中是否有下一个元素
while (it.hasNext()) {
//it.next();返回下一个元素
Object obj=it.next();
System.out.println(obj);
}
说明:1.通过Set集合iterator()方法获得该集合的迭代器。
2.根据迭代器的hasNext()方法判断集合中是否还有元素,如果有则返回true.
3.根据迭代器的next()方法获取集合中的元素,默认获取到的是Object类型的。
Ø 方式二:增强版的for循环
增强版的for循环适用于所有的集合(数组)遍历
语法:
for(数据类型 变量名:循环的集合/数组){
//循环体
}
例如:
for (Objectobj :set) {
System.out.println(obj);
}
TreeSet:排序后的set集合,不可重复,不能存放null数据
使用方式和HashSet类似,但是要注意,使用HashSet存放对象,该对象的类必须实现Comparable接口,该接口中的compareTo(Objecto)方法中定义排序规则。如果不实现该接口程序报错。
例如:将存放的学生按照年龄排序
package gaoji2;
publicclass StudentimplementsComparable{
private intid;
private Stringname;
private intage;
public int getId() {
returnid;
}
public void setId(intid) {
this.id = id;
}
public String getName() {
returnname;
}
public void setName(Stringname) {
this.name = name;
}
public int getAge() {
returnage;
}
public void setAge(intage) {
this.age = age;
}
public Student(intid, Stringname,intage) {
super();
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return"Student [id=" +id +", name=" +name +", age=" +age +"]";
}
@Override
public boolean equals(Objectobj) {
System.out.println("equals被执行了");
//1.判断obj是否为空
if(obj==null){
return false;
}
//2.判断是否属于同一类型
if(!(objinstanceof Student)){
return false;
}
//3.判断内容是否一样
Student stu=(Student)obj;
if(stu.getAge()==age&&stu.getName().equals(name)&&stu.getId()==id){
return true;
}
return false;
}
@Override
public int hashCode() {
System.out.println("hashCode被执行了");
// TODO Auto-generated method stub
returnname.hashCode()+age+id;
}
@Override
public intcompareTo(Object o) {
//定义比较规则:根据对象的age进行升序排列
//判断后返回1 -1 0
/**1:大于
* -1:小于
* 0:等于
*
*/
//1.判断o是否为空
if(o==null){
return 0;
}
if(oinstanceof Student){
Student stu=(Student) o;
if(stu.getAge()>age){
return 1;
}elseif(stu.getAge()<age){
return -1;
}else{
return 0;
}
}
return 0;
}
}
使用:
Set set=newTreeSet();
/*set.add("5");
set.add("2");
set.add("8");
set.add("3");
set.add("6");
set.add("4");*/
set.add(new Student(1, "zhangsan1", 16));
set.add(new Student(8, "zhangsan8", 20));
set.add(new Student(2, "zhangsan2", 32));
set.add(new Student(6, "zhangsan6", 19));
set.add(new Student(4, "zhangsan4", 18));
for (Objecto :set) {
System.out.println(o);
}
执行结果
Map:
Map集合用来保存具有映射关系的数据,即以键值对(key-value)的方式来存储数据。因此在Map集合的内部有两个集合,一个集合用于保存Map中的key(键),一个集合来保存Map中的value(值),其中key和value可以是任意的数据类型。
存储方式如下:
Map集合
从上图可以看出,每一个key在Map集合中对应唯一的value值,他们是一一对应的关系。
Map中常用的方法:
返回类型
方法名称
作用
Object
put(Object key,Object value)
添加元素,返回于此有关的value
void
clear()
清空集合中的数据
boolean
containsKey(Object key)
根据key从集合中判断key是否存在
boolean
containsValue(Object value)
根据value从集合中判断value是否存在
Object
get(Object key)
根据key获取对应的value值
Set
keySet()
返回Map集合的key的集合
int
size()
返回集合中元素的数量
Object
remove(Object key)
删除集合中key对应的元素
HashMap:
特点: 1.key可以为空(null),value可以为空(null)
2.HashMap中的键是根据HashSet进行存储的,
3.所以说HashMap中的数据是无序的,键不可重复的。
4.非线程安全的,效率高。
实例:
//创建HashMap集合
Map map=newHashMap();
map.put(1,"aa");//在map集合中添加了一条数据,key=1 value=aa
//在添加元素的时候如果key相等的时候,会覆盖前面的值。
map.put(2,"cc");
map.put(3,"zhangsan");
map.put("a",null);
//map.put(o);
System.out.println(map.size());//获取集合的长度(集合中的元素数)
System.out.println(map.get("a"));//根据map中指定的key去获取相应的值
注意:当两个相同键的对象进行保存的时候,后面添加的映射关系会覆盖前面的映射关系。
- 集合第三节
- 第三节 什么是ERP
- 第三节 CFileOpt类
- 第三节第五周
- 第三节课堂感受
- 第一章 --- 第三节
- 第二章 --- 第三节
- csdn第三节课
- 第三章 ---- 第三节
- Java 第三节 总结
- 第二章 第三节
- php学习 第三节
- XSS第三节,分门别类
- java笔记第三节
- 【第二章 第三节】
- 第三节 布局
- 【第一章 第三节】
- 课堂笔记-第三节
- linux(九)之网络基础
- 4.32 leetcode -32 maximum-subarray
- UVALive4043[Ants] 二分图完美匹配 KM算法
- PDD笔试-小熊吃糖
- 23种设计模式(2)-工厂模式
- 集合第三节
- 数组
- linux下多线程与互斥锁编程实例
- [北京] 今日头条 放出一大波新鲜职位 [15-50K]
- Qt 第6章 布局管理(4) 滚动区域 学习笔记
- Tomcat 如何部署多个工程并指向不同的域名
- 简单枚举 uva11059
- react理念
- 浅谈web网站架构演变过程