java集合
集合概述
- 集合类位于java.util包下
- Java集合类时非常实用,可以用于存储数量不等的对象,并可以实现常用的数据结构,如栈,队列等。
注意: Java集合类只能用于存放对象(实际是对象的引用)
- Java集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的跟接口,这两个接口又包含了一些子接口和实现类
- Java集合现在大致可以分为四大体系:Set、List、Queue、Map
- List和Set接口是Collection接口派生的两个子接口,分别代表了有序集合和无序集合
- Queue是Java提供的队列的实现,有点类似于List
- Map的实现类用于保存具有映射关系的数据,即关联数组
Map保存的每对数据都是key-value对,key不准重复
- Set、List、Queue、Map集合的常用实现类:HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap、TreeMap等
Collection和Iterator接口
- Collection接口是List、Set和Queue接口父接口,该接口中的方法可以用来操作List、Set和Queue集合。以下是Collection集合中的一些方法的代码体现
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
public class CollectionTest {
public static void main(String[] args) {
//创建一个集合c
Collection c = new ArrayList();
//为集合c中添加元素
c.add("yjh");
//为集合c中添加元素
c.add(6);
//输出集合c元素的个数
System.out.println("c集合的个数为:" + c.size());
//删除集合c中指定元素
c.remove(6);
//输出集合c中元素个数,验证元素已被删除
System.out.println("c集合的个数为:" + c.size());
//返回集合c中是否包含指定元素
System.out.println("c集合是否包含\"yjh\"字符串:" + c.contains("yjh"));
c.add("728");
//输出集合c中所有元素
System.out.println("c集合的元素:" + c);
//创建一个集合books
Collection books = new HashSet();
//为集合books添加元素
books.add("cpp");
//为集合books添加元素
books.add("疯狂java讲义");
//返回集合c中是否包含集合books中的所有元素
System.out.println("c集合是否包含books集合的所有元素:" + c.containsAll(books));
//删除集合c中的books集合元素
c.removeAll(books);
//输出集合c中的元素
System.out.println("c集合的元素:" + c);
//删除集合c中的所有元素
c.clear();
//输出集合c中的所有元素
System.out.println("c集合的元素:" + c);
//删除集合books中所有不属于集合c的元素
books.retainAll(c);
//输出集合books中所有元素
System.out.println("books集合的元素:" + books);
}
}
遍历集合的几种方法
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CollectionEach {
public static void main(String[] args) {
Collection c = new HashSet();
c.add("yjh");
c.add("728");
//hashSet不能添加相同的元素,若元素内容相同,但hashCode()的返回值不同也可添加成功
System.out.println(c.add("yjh"));
c.add("YJH");
c.add("616");
//使用Lambda表达式遍历集合
c.forEach(obj -> System.out.println("迭代元素集合:" + obj));
//使用Iterator遍历集合
Iterator it = c.iterator();
while (it.hasNext()) {
String s = (String) it.next();
System.out.println(s);
if (s == "YJH") {
//在迭代器中删除集合元素会引发ConcurrentModificationException异常
//c.remove(s);
it.remove();
}
//迭代变量对集合本身没有影响,相当于将集合中的元素复制了一份给迭代变量
s = "yjh728";
}
System.out.println("c:" + c);
c.add("YJH");
System.out.println("c:" + c);
//使用Lambda表达式遍历Iterator
//Iterator的对象只能被使用一次,下次使用时须重新进行赋值
it = c.iterator();
it.forEachRemaining(obj -> System.out.println("迭代元素:" + obj));
//使用ForEach遍历集合
for (Object obj : c) {
String s = (String) obj;
System.out.println(s);
if (s.equals("YJH")) {
//引发ConcurrentModificationException异常
//c.remove(s);
}
}
System.out.println("c:" + c);
}
}