版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
http://blog.csdn.net/xiaoduan_/article/details/79343236
JAVA集合
JAVA中的集合框架
List(列表)
- List是元素有序并且可以重复的集合,称为序列
- List可以精准的控制每个元素的插入位置,或删除某个位置的元素
- List的两个主要实现类是ArrayList和LinkedList
ArrayList
- ArrayList底层是由数组实现的
- 动态增长,以满足应用程序的需求
- 在列表尾部插入或者删除非常有效
- 更适合查找和更新元素
- ArrayList中元素可以为null
List list=new ArrayList();
list.add("hadoop");
list.add("spark");
list.add("Go");
list.add("swift");
//输出列表中元素的个数
System.out.println("列表中元素的个数为:"+list.size());
//遍历输出所有编程语言
System.out.println("**************************************");
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+",");
}
//移除列表中的Go
System.out.println();
//list.remove(2);
list.remove("Go");
System.out.println("**************************************");
System.out.println("移除Go以后的列表元素为:");
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+",");
}
LinkedList
- 概述
- 与ArrayList一样,LinkedList也按照索引位置排序,但她的元素之间是双向链接的(双向链表)
- 适合快速的插入和删除数据
- LinkedList实现了List和Queue两个接口
- 构造方法
方法名 | 说明 |
---|---|
LinkedList() | 构造一个空列表 |
LinkedList(Collection<? extends E> c) | 构造一个包含指定collection中元素的列表,这些元素按照collection的迭代器返回的顺序排列 |
Set
- Set是元素无序并且不可以重复的集合,被称为集
HashSet
- HashSet是Set的一个重要实现类,成为哈希集
- HashSet中的元素无序并且不可以重复
- HashSet中只允许一个null元素
- 具有良好的存取和查询性能
Iteratior(迭代器)
- Iterator接口可以以统一的方式对各种集合元素进行遍历
- hasNext()方法检测集合中是否有下一个元素
- next()方法返回集合中的下一个元素
- 迭代器只能使用一次,如果想再次使用需要重新构造
Iterator it = mySet.iterator();//mySet 为集合的名称
while (it.hasNext()) {
System.out.println(it.next());
}
Map
- Map中的数据是以键值对(key-value)的形式存储的
- key-value以Entry类型的对象实例存在
- 可以通过key值快速地查找value
- 一个映射不能包含重复的键
- 每个键最多只能映射一个值
HashMap
- 基于哈希表的Map接口的实现
- 允许使用null值和null键
- key值不允许重复
- HashMap中的Entry对象是无序排列的
自定义对象存储在set中时,需要重写对象是否重复的比较方法
重写hashCode()方法(使用自动生成的默认也可以)和equals()方法
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + month;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((species == null) ? 0 : species.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
//判断对象是否相等,相等则返回true,不用继续比较属性了
if(this==obj)
return true;
//判断obj是否是Cat类的对象
if(obj.getClass()==Cat.class){
Cat cat=(Cat)obj;
return cat.getName().equals(name)&&(cat.getMonth()==month)&&(cat.getSpecies().equals(species));
}
return false;
}