集合
概念:Java中的集合是工具类,可以存储任意数量的具有共同属性的对象
应用场景
1.无法预测存储数据的数量
2.同时存储具有一对一关系的数组
3.需要进行数据的增删
4.数据重复问题
集合框架的体系结构
集合框架分为两类
1.Collection(存储类的对象,是接口)
三个子接口: 实现类:
1) List:序列(内容要求有序,可以重复) ArrayList(长度正态增长的数组)
2) Queue:队列(内容要求有序,可以重复) LinkedList(链表的内容)
3) Set:集(无序,不可重复) HashSet(哈希集)
2.Map(键值对,是接口)
实现类:HashMap(哈希表)存储以键值对形式表示的数据
List集合
List list=new ArrayList();
一、概述
1.List是元素有序并且可以重复的集合,称为序列
2.List可以精确的控制每个元素的插入位置,或删除某个位置的元素
3.List的两个主要实现类是ArrayList和LinkedList
二、ArrayList
1.ArrayList底层是由数组实现的
2.动态增长,以满足应用程序的需求
3.在列表尾部插入或删除数据非常有效
4.更适合查找和更新元素
5.ArrayList中的元素可以为null
集合在java.util.Collection.List中,使用jdk查看其方法
使用ArrayList集合
1.建造一个有所需信息的类并设置带参的构造方法(并调用super()方法)
2.在主方法中实例化信息类,并调用有参构造方法
3.然后ArrayList noticeList=new ArrayList();
4.将实例添加到集合中 noticeList.add(Object Obj);
5.强制转换并调用get方法((NoticeDemo)(noticeList.get(i))).getDate()
Set集合
HashSet(哈希集)
HashSet是Set的一个重要实现类,称为哈希集
HashSet中的元素无序并且不可以重复
HashSet中只允许一个null元素
具有良好的存取和查找性能
方法:
contains(Object Obj);如果set包含指定元素则返回true
add(E e);添加方法
remove(Object Obj);移出方法
size();返回set中的元素数
iterator();返回在此set中的元素上进行迭代的迭代器
遍历:
Iterator<限制类名> it=set.iterator();泛型用来限制其类型
while(it.hasNext()){System.out.println(it.next());}
限制:
读取数据时是不允许删除数据的
重写方法:
右键-Source-Generate String()
重写toString方法以便于输出内容,而非地址
右键-Source-Generate hashCode() and equals()
重写hashCode方法不用管
重写equals方法
1.判断对象是否相等,相等则返回true,不用继续比较属性
2.判断obj是否是该类的对象,如果是,则强制转换成此类对象并返回属性比较之后的结果 重写这两个方法是为了保证数据不重复
泛型限定set中数据的类型
Setset=new HashSet();
重写toString方法,以便于用其输出内容,而不是地址
@Override
public String toString() {return "name=" + name + ", age=" + age;}
重写hashCode方法
@Override
public int hashCode() {final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;}
重写equals方法
@Override
public boolean equals(Object obj) {
//判断对象是否相等,相等则返回true,不用继续比较属性
if (this == obj)
return true;
//判断obj是否是Cat类的对象,如果是,则强制转换并返回属性比较之后的结果
if (getClass() == obj.getClass()){
CatTest cat=(CatTest)obj;//强制转换成CatTest类型
return cat.getName().equals(name)&&(cat.getAge()==age);}
return false;}
Map
概述:
Map中的数据是以键值对(key-value)的形式存储的
key-value以Entry类型的对象实例存在
可以通过key值快速地查找value
一个映射不能包含重复的键
每个键最多只能映射到一个值
常见类:
HashMap
基于哈希表的Map接口的实现
允许使用null值和null键
key值不允许重复
HashMap中的Entry对象事无序排列的
HashMap中会key值重复时会覆盖以前的值