Java中的Collection集合框架体系
Collection 老祖先,接口 interface
位于API中的java.util包中
工作中常用的两个子接口一定要知道:List 和 Set
List是有索引的,Set是无索引,有索引实际上相当于有顺序。
List 子接口:ArrayList动态数组 LinkedList链接数组 Vector向量
ArrayList 和 LinkedList的区别?
数据存取方式不一样,称为不同的数据结构
ArrayList:基于数组实现的,挨个存放的优点是查找速度快,但对于增加和删除元素来说,挪位比较麻烦。
LinkedList:基于链表实现的,分开存放的优点是查找速度慢,但对于增加和删除元素来说,因为在物理上没存在一起,所以方便快捷。
Vector:向量:基于数组实现的,但是已经过时,现在都用ArrayList。
Set子接口:HashSet (无序)TreeSet(有序)
集合中存储的是对象的引用,真正的对象实际是存在堆(heap)里面的
迭代器(遍历器)
迭代器用于遍历集合中的元素
常见写法:
Iterator it = list.iterator();
while(it.hasNext()){
//处理元素;
}
for(Iterator it=al.getIterator;it.hasNext();)
{
//处理元素;
}
一.List的实现类ArrayList
测试类:
package javastudy;
import java.util.ArrayList;//当你编写时会自动导入所属的包名
import java.util.Iterator;
public class testit {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String>al=new ArrayList<String>();
al.add("广州");
al.add("深圳");
al.add("江门");
al.add(0, "佛山");//在指定位置存放元素
al.set(1, "中山");//修改指定位置的元素
println1(al);
System.out.println("******");
println2(al);
al.remove(0);//删除指定位置的元素
System.out.println("******");
println2(al);
}
//方法一打印数组元素内容
static void println1(ArrayList<String>al) {
for(int i=0;i<al.size();i++)
{
System.out.println(al.get(i));
}
}
//方法二打印数组元素内容
static void println2(ArrayList<String>al) {
Iterator<String>it=al.iterator();//遍历器相当于一个指针
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
输出结果:
补充:
Iterator是 迭代器类。
迭代这个名词对于熟悉Java/C++的人来说绝对不陌生。我们常常使用JDK提供的迭代接口进行java collection的遍历:
Iterator it = list.iterator();
while(it.hasNext()){
//using “it.next();”do some businesss logic
}
而这就是关于迭代器模式应用很好的例子。
来源:https://zhidao.baidu.com/question/2054173264077836747.html
二.Set的实现类
测试类:
package javastudy;
import java.util.HashSet;
import java.util.Iterator;
import java.util.TreeSet;
public class testit1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet<String> hs=new HashSet<String>();
hs.add("北京");
hs.add("南京");
hs.add("东京");
hs.add("西京");
//第一种方法输出数组信息
for(Iterator<String>it=hs.iterator();it.hasNext();)
{
System.out.println(it.next());
}
TreeSet<String> ts=new TreeSet<String>();
ts.add("Beijing");
ts.add("Shanghai");
ts.add("Tianjing");
ts.add("Chongqing");
//TreeSet在java中的字母排序是按A~Z排序的,观察结果。
//第二种方法输出数组信息
Iterator<String> it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
输出结果: