List、Set、Map
- 在实际开发中,需要将使用的对象存储与特定的数据结构的容器中。JDK提供了这样的容器--集合(Collection)。
- Collection 是一个接口,定义了集合相关的操作方法。其有两个子接口:List、Set
- List:可以重复集,元素是否重复,取决于元素的equals方法比较结果
- Set:不可重复集的
package chapter05;
import java.util.ArrayList;
import java.util.Collection;
import chapter02.Point;
/**
* java.util.Collection
* 集合,用于存储一组元素。提供了维护集合的相关方法
*
* 其派生了两个子接口:
* List:可重复集
* Set:不可重复集
* 元素是否重复是依靠元素自身equals方法比较的结果而定的
* @author tedu
*
*/
public class CollectionDemo01 {
public static void main(String[] args) {
Collection c = new ArrayList();
/*
* boolean add(E e);
* 向集合中添加元素
* 当元素添加成功后,返回true
*/
c.add("one");
c.add(1);
c.add(new Point(1,2));
System.out.println(c);
/*
* int size();
* 返回当前集合的元素个数
*/
System.out.println("size:"+c.size());
/*
* boolean isEmpty();
* 判断当前集合是否含有任何元素。
* 空集合
*/
boolean isEmpty = c.isEmpty();
System.out.println("是否为空集:"+isEmpty);
/*
* void clear()
* 清空集合元素
*/
c.clear();
System.out.println("是否为空集:"+c.isEmpty());
System.out.println(c.size());
}
}
判断集合是否包含给定元素
package chapter05;
import java.util.ArrayList;
import java.util.Collection;
import chapter02.Point;
/**
* boolean contains(E e)
* 判断当前集合是否包含给定元素
* @author tedu
*
*/
public class CollectionDemo02 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Point(1,2));
c.add(new Point(3,4));
c.add(new Point(5,6));
c.add(new Point(7,8));
System.out.println(c);
Point p = new Point(1,2);
/*
* 集合判断是否包含指定的元素是依靠元素的equals方法
* 比较的结果。只要集合中有元素与给定元素比较为true,
* 则认为包含
*/
boolean contains = c.contains(p);
System.out.println("是否包含:"+contains);
}
}
删除集合元素
boolean remove(E e)
从集合中删除指定元素,删除成功返回true
删除集合中第一个与给定元素equals比较为true的元素
package chapter05;
import java.util.ArrayList;
import java.util.Collection;
import chapter02.Point;
public class CollectionDemo04 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Point(1,2));
c.add(new Point(3,4));
c.add(new Point(5,6));
c.add(new Point(1,2));
System.out.println(c);
Point p = new Point(1,2);
c.remove(p);
System.out.println("删除完毕");
System.out.println(c);
}
}
批量操作集合
1.将给定集合中的所有元素添加到当前集合中、
2.判断当前集合是否包含给定集合中的所有元素
3.从当前集合中删除掉与指定集合中共有的元素
package chapter05;
import java.util.ArrayList;
import java.util.Collection;
/**
* 集合的批量操作
* @author tedu
*
*/
public class CollectionDemo05 {
public static void main(String[] args) {
Collection c1 = new ArrayList();
c1.add("java");
c1.add("c++");
c1.add("php");
c1.add(".net");
System.out.println(c1);
Collection c2 = new ArrayList();
c2.add("ios");
c2.add("C#");
c2.add("Python");
c2.add("Web");
System.out.println(c2);
/*
* 取并集
* boolean addAll(Collection c)
* 将给定集合中的所有元素添加到当前集合中、
* 添加后只要当前集合元素数量发生了边界,则返回true
*/
boolean flag = c1.addAll(c2);
System.out.println(c1);
System.out.println(flag);
Collection c3 = new ArrayList();
c3.add("java");
c3.add("c++");
System.out.println(c3);
/*
* boolean containsAll(Collection c)
* 判断当前集合是否包含给定集合中的所有元素
*/
flag = c1.containsAll(c3);
System.out.println("全包含:"+flag);
/*
* boolean removeAll
* 从当前集合中删除掉与指定集合中共有的元素
*/
c1.removeAll(c3);
System.out.println(c1);
System.out.println(c3);
}
}
集合的迭代器
Collection提供统一的遍历集合元素的方式:迭代器模式
Iterator iterator()
获取用于遍历当前集合的迭代器
java.uti.Iterator 是一个接口,规定用于遍历集合的相关方法
不同的集合提供了相应的实现类。无需记住哪些实现类的名字,
只将他们当做Iterator使用即可
遍历集合遵循:问,取,删的步骤。其中删除不是必须操作。
package chapter05;
public class CollectionDemo06 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
c.add("one");
c.add("#");
c.add("two");
c.add("#");
c.add("three");
c.add("four");
c.add("five");
System.out.println(c);
//获取当前集合的迭代器
//[one, two, three, four, five]
/*
* boolean hasNext() 问的过程
* 该方法是判断集合是否还有元素可以取出
*
* E next() 取的过程
* 获取集合的下一个元素
*/
Iterator it = c.iterator();
while(it.hasNext()) {//问:是否存在元素
String str = (String) it.next();//取:获取该位置的元素
if("#".equals(str)) {
/*
* 在使用迭代器遍历 集合时,不要使用
* 集合的方式来增删元素,否则会引发异常
*/
//c.remove("#");
it.remove();
}
System.out.println(str);
}
System.out.println(c);
}
}
增强型for循环
JDK 5.0 之后推出一个新特性,增强for循环,也称为新循环
该循环不通用于传统的循环工作,其只用于遍历集合或数组
语法:、
for(元素类型 e : 集合或数组名){
循环体;
}
新循环并非新的语法,而是编译过程中,编译器会将新循环转换为迭代器,所以新循环本质上就是迭代器。
package chapter05;
public class Collection_for {
public static void main(String[] args) {
String[] array = {"one","two","three","four"};
for (int i = 0; i < array.length; i++) {
String str = array[i];
System.out.println(str);
}
for(String str : array) {
System.out.println(str+1);
}
}
}
网友评论