1.集合的理论知识:
集合:对一组数据进行储存的一种方式,存放的为对象的引用,即对象的堆指向或者常量池指向。
实现的大方向有两个接口:Collection和Map
使用例如:一堆学生的数据,每个人数据里面有姓名年龄,我们可以把这一堆学生作为集合存储起来。
2.集合的分类:
Collection下被Set和List接口继承。Map被HashMap TreeMap和HashTable实现。具体包含关系为下列三行。
1.Set类:Hashset,Treeset,LinkedHashSet
2.list类:Arraylist,Vector,LinkedList
3.Map类:HashMap,TreeMap,HashTable
3.Set类-HashSet:
HashSet
声明方式:Set set=new HashSet();
拥有的方法:
add() 添加某个数据
clear() 清除数据
contains() 检查是否包含某个数据
isEmpty() 检查是否为空
iterator() 迭代器 对集合内数据循环进行操作
remove() 删除某个数据
size() 查看集合内元素个数
package com.briup.ch10;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Test4 {
public static void main(String[] args) {
Set set=new HashSet();
//添加数据
set.add(true);
set.add("我");
set.add(1);
System.out.println(set);
//检查是否含有某条数据,返回值是boolean
set.contains("我");
System.out.println(set.contains("我"));
//删除某条特定元素
set.remove("我");
System.out.println(set);
//查看目前集合拥有数据的多少,返回值是int
set.size();
System.out.println(set.size());
//迭代器的使用,可以对集合内的数据进行操作
Iterator iterator = set.iterator();
while(iterator.hasNext()) {
Object next = iterator.next();
System.out.print(next);
}
System.out.println();
//清除数据
set.clear();
System.out.println(set);
//判断是否为空集合,返回值为boolean
set.isEmpty();
System.out.println(set.isEmpty());
}
}
执行结果
特点:乱序,不能重复
HashSet
乱序:添加进来的数据是没有顺序的,但这个没有没有顺序是指的它不会根据你指定的某个规则来排序,也不会根据你add进数据的顺序排放。它也会根据底层比如字符串放在基本数据类型前边,字符串假如是英文,根据字母abc顺序进行排序。
不能重复:它每次添加进来的数据会对它的hashCode和equals进行比较,先比较hashCode,再比较equals,我们可以重写这两个方法来使HashSet不再具有不能重复的特点,至于HashCode和equals具体可以查看源码。