一、集合概述
用来存储不同类型的多个对象的一些特殊类的统称为集合,可以简单的理解为存储不同数据类型的动态数组(因为数组的长度是一定的,而集合长度是可以改变的)。核心接口:Collection、List、Set、Map。
二、Collection接口
Collection接口是Java单列集合中的根接口,在某种定义上可以把Collection看成是动态的数组,一个对象的容器,通常把放入Collection中的对象称为元素。
1.Collection接口的声明
public interface Collection
2.Collection接口的方法
public boolean add(Object o)
功能描述:向当前集合中添加一个元素
public boolean addAll(Collection c)
功能描述:将集合c中所有元素添加给此集合
public void clear()
功能描述:删除集合中的所有元素
public boolean contain(Object o)
功能描述:查找集合中是否含有对象o
public boolean containsAll(Collection c)
功能描述:查找集合中是否含有集合c中的所有元素
public boolean equals(Object o)
功能描述:判断集合是否等价
public boolean isEmpty()
功能描述:判断集合中是否有元素
public boolean remove(Object o)
如果集合中有与o相匹配的对象,就删除对象o
public Iterator iterator()
返回一个迭代器,用于访问集合中的各个元素
public int size()
功能描述:返回当前集合中元素数量
三、List接口
List是Collection的子接口,继承了Collection接口的全部方法,还添加了一些特有方法。
1.List接口的声明
public interface List extends Collection
2.List接口的方法
public void add(int index,Object element)
功能描述:在指定位置index上添加元素element
public Object get(int index)
功能描述:返回列表中指定位置的元素
public int indexOf(Object o)
功能描述:返回第一次出现元素o的位置,否则返回-1
public int indexOf(Object o)
功能描述:返回最后一次出现元素o的位置,否则返回-1
public Object remove(int index)
功能描述:删除指定位置上的元素
public Object set(int index,Object element)
功能描述:用元素element代替index位置上的元素
3.举例
随机生成7个36以内的数并存入list集合中
代码
package test3;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class test3 {
public static void main(String[] args) {
Random r=new Random();
List<Integer> list=new ArrayList<Integer>();
int count=0;
while(count<7) {
int num=r.nextInt(36)+1;
if(!list.contains(num)) {
list.add(num);
count++;
}
}
System.out.println("36选7摇号如下:");
for (Integer integer : list) {
System.out.print(integer+"\t");
}
}
}
执行结果
四、Set接口
Set的方法与Collection接口的方法基本一致,Set元素无序且不重复
HashSet
HashSet是Set接口的一个实现类,为了去掉重复元素需要重写hashCode()和equals()方法
举例
随机生成7个36以内的数并存入HashSet集合中
代码
package test8;
import java.util.HashSet;
public class test8 {
public static void main(String[] args) {
HashSet<Integer> set=new HashSet<>();//注意Integer里的I是大写的
System.out.println("36选7摇号如下:");
while(set.size()<7) {
int num=(int)(Math.random()*36)+1;//(int)不要忘记
set.add(num);
}
for (Integer integer : set) {
System.out.print(integer+"\t");
}
}
}
执行结果