java集合
通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。
Java集合类存放在java.util包中,是一个用来存放对象的容器。
注意:
1.集合只能存放对象。比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。
2.集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。
3.集合可以存放不同类型,不限数量的数据类型。
Collection接口
Collection接口是List, Set, Queue的父接口,该接口里定义的方法既可以用于Set集合,也可以用于操作List, Queue集合。Collection接口里定义了如下操作集合元素的方法:
boolean add(Object o):向集合里添加一个元素,若添加成功则返回true
boolean addAll(Collection c):把集合c里所有元素添加到指定集合内
void clear():清空集合内所有元素
boolean contains(Object o):判断集合里书否包含指定元素o
boolean containsAll(Collection c):判断集合里是否包含集合c中所有元素
boolean isEmpty():返回集合是否为空
boolean remove(Object o):删除集合中指定元素o,当集合中包含了多个o时都将被删除,删除成功返回true
int size():返回集合中元素个数
Object[] toArray():将集合转换成一个数组,所有集合中元素变成对应的数组元素
Iterator iterator():返回一个Iterator对象用于遍历集合里的元素
public class Collection {
public static void main(String[] args) {
var c = new ArrayList();
c.add("孙悟空");
c.add(6);
System.out.println(c.size());
c.remove(6);
System.out.println(c.size());
System.out.println(c.contains("孙悟空"));
c.add("111");
System.out.println(c);
var books = new HashMap();
books.add("456");
books.add("789");
System.out.println(c.contains(books));
c.remove(books);
c.clear();
System.out.println(c);
books.retainAll(c);
System.out.println(books);
}
}
上面创建了两个Collection对象,一个是c集合,一个是books集合,其中c集合ArrayList,而books集合是HashSet.虽然他们使用的实现类不同,但当把他们当成Collection来使用时,使用add,remove,clear等方法来操作集合元素时没有任何区别。
使用Iterator接口遍历集合
Iterator用于遍历Collection集合中的元素,Iterator对象也被称为迭代器。Iterator接口隐藏了各种Collection实现类的底层细节,定义了如下三个方法:
boolean hasNext():如果集合还有元素未被遍历则返回true,若已遍历完集合内所有元素则返回false
Object next():返回集合中的下一个元素
void remove():删除集合中上一次next方法返回的元素
public class TestIterator {
public static void main(String[] args)
{
HashSet books = new HashSet();
books.add("Java疯狂笔记");
books.add("代码整洁之道");
books.add("秃头");
// 获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext())
{
String book = (String)it.next();
System.out.println(book);
if(book == "秃头")
it.remove(); // 删除"秃头”这个元素
}
System.out.println(books); // [Java疯狂笔记, 代码整洁之道]
}
}