JAVA 13 (集合框架)

集合是一种容器。
集合和数组的不同之处:只用于存储对象,集合长度可变,数组只能存同一种类型的对象,集合可以存任意对象。
 
Collection
    |--List:元素是有序的,元素可以重复,因为该集合提醒有索引
            |--ArrayList:底层的数据结构使用的是数组,查询速度很快,增删稍慢。是不同步的,容易出安全隐患。单线程用,效率高。
            |--LinkedList:底层数据结构使用的是链表数据结构,查询速度慢,增删快
            |--Vetor:底层是数组数据结构。victor是同步的,进步不用了
    |--Set:元素无需,不可重复,无索引
            |--HashSet :底层数据结构是哈希表。
            |--TreeSet

 
 
 
 
 
 
 
 
 
 
 
 
 
Collection
 
collection是一个接口
其中包含ArrayList 和 LinkedList 和 Vector  三个主要的类
集合中存储的是对象的引用。
主要方法介绍:以ArrayList为例
 
import java.util.*;
public class Test {
 public static void main(String adgs[])
 {
  ArrayList al = new ArrayList();
  ArrayList al2 = new ArrayList();
  al2.add("ppp");
  al2.add("kkk");
 
 
  //1,,添加元素
  al.add("java1");
  al.add("java2");
  al.add("java3");
  al.add("java4");
 
  //2,获取长度
  sop("size:"+al.size());
 
  //3,打印集合
  sop(al);
 
  //4,删除元素
  al.remove("java2"); //使用该对象的equals来判断是否相同
  sop(al);
 
  //5,清空集合
  al.clear();
  sop(al);
 
  al.add("java1");
  al.add("java2");
  al.add("java3");
  al.add("java4");
 
  //6,判断元素
  sop("java1是否存在"+al.contains("java1"));   //equals
 
  //7,添加集合 addall
  al.addAll(al2);
  sop(al);
 
  //8,取交集,存放在al中
  al.clear();
  al2.clear();
  al.add("java1");
  al.add("java2");
  al.add("java3");
  al.add("java4");
 
  al2.add("ppp");
  al2.add("kkk");
  al2.add("java3");
  al2.add("java4");
  al.retainAll(al2);
  sop(al);
 
  //9,取差集  al/al2
  al.removeAll(al2);
 
  //10,containsAll() 返回 true or false
 
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}
 
迭代器类:Interator
取出并操作元素:
 
统一了集合元素的取出方式。
 
使用过程:
获取对象
Interator it = collection.iterator();
方法 Object it.next()//取出元素
        boolean it.hasNext()//判断是否还有元素可以取出
import java.util.*;
public class Test {
 public static void main(String adgs[])
 {
  ArrayList al = new ArrayList();
  //1,,添加元素
  al.add("java1");
  al.add("java2");
  al.add("java3");
  al.add("java4");
 
  /*
  Iterator it = al.iterator();//获取迭代器,用于取出集合中的元素
  while(it.hasNext())
   sop(it.next());
   */
 
  for(Iterator it = al.iterator();it.hasNext();) //这种写法节省内存
   sop(it.next());
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}
 
 
 
List
 
 
List特有的常见方法:
凡是可以操作角标的方法都是
 
    add(index,element)
    addAll(index,Collection)
    remove(index)
    set(index,element)//ele:元素
查  
    get(index)
    subList(from,to)
    listIterator()
 
ArrayList
import java.util.*;
public class Test {
 public static void main(String adgs[])
 {
  ArrayList al = new ArrayList();
 
  //添加元素
  al.add("java01");
  al.add("java02");
  al.add("java03");
  sop("元集合"+al);
 
  al.add(1,"java09");
  sop(al);
 
  //删除指定位置元素
 
  al.remove(2);
  sop(al);
 
  //修改元素
  al.set(1, "jjj");
  sop(al);
 
  //查
  sop("1:"+al.get(1));
 
  //获取所有元素。
  for(int x=0;x<al.size();x++)
   sop("al()"+al.get(x));
  //通过 indexOF获取对象的位置
  sop(al.indexOf("java03"));
 
  List sub = al.subList(1, 3);  
  sop(sub);
 
 
 
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}
 
 
列表迭代器
 
import java.util.*;
public class Test {
 public static void main(String adgs[])
 {
  ArrayList al = new ArrayList();
 
  al.add("java01");
  al.add("java02");
  al.add("java03");
 
  Iterator it = al.iterator();
 
  while(it.hasNext())
  {
   Object obj = it.next();
   
   if(obj.equals("java02"))
    it.remove();     //讲java02从集合中删除了。但不支持al.add()操作
   //会引发异常
   sop(obj);
  }
  sop(al);
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}
 
所以就有了列表迭代器:
 
 
 
LinkedList
 
特有方法:
addFirst(obj);//在LL的最开头添加obj
addLast(obj);
 
getFirst(); //获取头,尾
getLast();
 
removeFirst();//获取元素,但是元素会被删除。如果没有元素,会出现异常。
removeLast();
 
 
 
 
ArrayList 练习
 
删除重复对象,核心在于重写该对象的equals方法
注意类型转换多态的应用。
 
 
Set
 
Set接口:元素无须,不可重复。
 
Set的功能是和Collection是一致的
 
建立对象时建立 HashSet
 
 
posted @ 2015-07-25 15:16  hitz&x  阅读(634)  评论(0编辑  收藏  举报