JAVA集合------萌新学习之路,Iterator、fore
2017-03-10 本文已影响0人
小白白又白
Java集合大致分为三类:set、map、list(queue,JDK1.5之后新增,dictionary过时类似map键值对存储形式)
使用时引入 java.util
set: 无序不可重复集合
map:具有映射关系的集合
list:有序,可重复的集合
集合示意图
Paste_Image.pngJava的集合类主要由Java集合框架的根接口collection、map派生而来
Paste_Image.png
常用的collection和iterator接口
接口 | 描述 |
---|---|
boolean add(Object o) | 该方法用于向集合里添加一个元素,如果添加成功返回true |
boolean addAll(Collection c) | 该方法把集合c的所有元素添加到指定集合中,成功返回true |
void clear() | 清楚指定集合的所有元素,将集合长度变为0 |
**boolean contains(Object o) ** | 返回集合是够包含指定元素 |
boolean containsAll(Collection c) | 返回集合是否包含指定元素 |
boolean isEmpty() | 返回集合是否为空 |
iterator iteraot | 返回一个iterator对象用于遍历集合所有元素 |
boolean remove(Object o) | 删除集合中的o元素,如果集合中有多个删除多个,成功返回true |
boolean removeAll(Collection c) | 从集合中删除集合c里包含的所有元素,相当于集合减去c集合,如果集合元素删除了一个或多个返回true |
boolean retainAll(Collection c) | 从集合中删除不包含c集合里不包含的元素,返回true |
int size() | 返回集合元素的个数 |
Object[] toArray() | 把集合转换为一个数组,所有集合元素变成数组元素 |
代码示例
public static void main(String[] args) {
Collection c = new ArrayList();
//添加元素
c.add("钢铁是怎样炼成的");
//虽然Java集合不能存放基本类型,但是Java支持自动装箱
c.add(6);
System.out.println("c集合的元素个数是"+c.size());
//判断是否包含指定字符串
System.out.println("判断集合c是否包含指定的字符串"+c.contains("钢铁"));
c.add("朝花夕拾!");
System.out.println("c集合的元素"+c);
//删除集合里的所有元素
Collection books = new HashSet();
books.add("钢铁是怎样炼成的");
books.add("茶花女");
System.out.println("c集合是否完全包含books集合?"+c.containsAll(books));
//c集合的元素减去books的元素
c.removeAll(books);
System.out.println("移除之后c集合的元素"+c);
//删除c集合中的所有元素
c.clear();
System.out.println("c集合的元素"+c);
//books集合里值剩下c集合里也同事包含的元素
books.retainAll(c);
System.out.print("books里的元素"+books);
}
}
**
ArrayList和HashMap实现类虽然不同,但是把他们当成Collection来使用时,使用 add、remove、clear等方法时完全一样
所有Collection 的实现类重写了toString()方法,该方法可以一次性输出集合的所有元素
**
使用iterator接口遍历集合元素
iterator迭代器主要用来遍历集合元素
接口方法
方法 | 描述 |
---|---|
boolean hasNext() | 如果被迭代的集合元素都还没有被遍历,则返回true |
Object next() | 返回集合里面的下一个元素 |
void remove() | 删除集合里上一次next方法返回的元素 |
代码示例
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
public static void main(String[] args) {
//创建一个集合
Collection testCollection = new HashSet();
//添加元素
testCollection.add("霸王花!");
testCollection.add("三生三世");
testCollection.add("十里桃花");
// testCollection.clear();
//获取对应的iterator
Iterator it = testCollection.iterator();
while(it.hasNext()){
//it.next()返回类型是Object需要强制转换
String str = (String)it.next();
System.out.println(str);
System.out.println(testCollection);
if(str.equals("三生三世")){
it.remove();
}
}
}
}
**
Collection中的元素不能 被改变,只有通过 Iterator的remove方法先删除next方法返回的元素,不然将会引发java.util.ConcrrentModificationException异常
**
使用foreach遍历集合元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
public static void main(String[] args) {
//创建一个集合
Collection testCollection = new HashSet();
//添加元素
testCollection.add("十里桃花");
testCollection.add("三生三世");
testCollection.add("霸王花!");
// testCollection.clear();
//获取对应的iterator
System.out.println(testCollection);
for(Object obj: testCollection){
String str = (String) obj;
System.out.println(str);
if (str.equals("三生三世")){
// testCollection.remove(); 引发异常
}
}
System.out.println(testCollection);
}
}