Collecton
一些 集合 允许有重复的元素(List),而另一些则不允许(Set)。
一些 集合(List) 是有序的,而另一些则是无序的(Set)。JDK 不提供此接口的任何直接 实现: 它提供更具体的子接口(如 Set 和 List)实现.
面试题
数组和集合的区别?
- 1)长度的区别
数组:长度是固定的
集合:长度是可变的 - 2)存储类型的区别
数组:可以存储基本类型,也可以存储引用数据类型
集合:只能存储引用类型! - 3)存储元素的区别:
数组:只能存储同一种类型的元素 举例:水杯中水
集合:可以存储不同类型的元素(类型都是引用类型) :举例:可乐+水+雪碧
Collection的基本功能
- 添加元素:
boolean add(Object e):添加任意的引用类型元素 - 删除元素:
boolean remove(Object o):删除指定的元素
void clear() :清空集合中的所有元素 - 判断功能:
boolean contains(Object o):判断是否包含指定的元素 包含就返回true,否则返回false
boolean isEmpty():判断集合是否为空,如果为空,则返回true,否则false - 获取功能:
int size() :获取集合中的元素数
Object[] toArray():将集合进行遍历—>将集合转换成数组遍历(传统方式)
Iterator iterator() :获取Collection的集合的迭代器(集合的专有遍历方式)
代码实现:
package CSDN_Test;
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo {
public static void main(String[] args) {
//创建一个Collection集合对象
//Collection c = new Collection() ; //接口不能实例化
Collection c = new ArrayList() ;
System.out.println(c);//[] 空集合//集合重写了Object类中toString()方法
//boolean add(Object e):添加任意的引用类型元素
//boolean flag = c.add("hello") ;
c.add("hello") ;
c.add("world") ;
c.add("javaee") ;
c.add("hello") ;
/*
* public boolean add(E e) { //只要添加元素,就返回true
//省略
return true;
}
* */
//System.out.println(flag);
System.out.println("------------------------------");
//boolean remove(Object o):删除指定的元素
System.out.println("remove():"+c.remove("world"));//
//void clear() :清空集合中的所有元素 (暴力删除)remove():true
//c.clear() ;
// boolean contains(Object o):
System.out.println("conatins():"+c.contains("javaee"));//conatins():true
System.out.println("conatins():"+c.contains("python"));//conatins():false
System.out.println("isEmpty():"+c.isEmpty());//isEmpty():false
System.out.println("-----------------------");
//集合中获取长度:size()
//数组中获取长度:length属性
//字符串中获取长度:length()
System.out.println("size():"+c.size());//size():3
System.out.println(c);//[hello, javaee, hello]
}
}
集合的遍历功能
用Collection集合存储字符串并遍历:
- toArray()方法
toArray()方法是将集合转换成数组
public static void main(String[] args) {
//1)创建集合对象
Collection c = new ArrayList() ;
//2)添加字符串元素
c.add("hello") ;
c.add("world") ;
c.add("javaee") ;
c.add("hello") ;
c.add("javaee") ;
c.add("python") ;
//3)遍历
Object[] objs = c.toArray() ; //想当于多态:向上转型:Object[] objs = new String() ;
for(int x = 0 ; x < objs.length ; x ++) {
//System.out.println(objs[x]);
//要输出字符串的同时,输出字符串长度
//System.out.println(objs[x]+"---"+objs[x].length());
//向下转型
String s = (String) objs[x] ;
System.out.println(s+"---"+s.length());
}
}
- Iterator iterator()
public static void main(String[] args) {
//1)创建集合对象
Collection c = new ArrayList() ;
//2)给集合中添加字符串数据
c.add("hello") ;
c.add("world") ;
c.add("JavaEE") ;
//3)Iterator<Object> iterator() 获取集合的迭代器对象
Iterator it = c.iterator() ;
while(it.hasNext()) {
//在获取字符串的同时,获取长度
String s =(String) (it.next()) ;
System.out.println(s+"---"+s.length());
}
}
迭代器的使用
1)集合获取迭代器的时候,集合里面存储的类型是什么类型,心里要清楚,转换会出现类转换异常(没有使
2)next()不能使用多次 ,结果不匹配(next()使用拿到了迭代器中所有的对象)Object obj = 迭代器对象.next();