集合框架《一》List集合具体对象的特点

时间:2021-07-15 19:26:39

 

 

*1 add方法的参数类型是Object。一边与接收任意对象
  2集合中存储的是对象的引用(地址),集合中不存在对象实体
      迭代器:集合取出的方式
       Iterator<E> iterator()
          返回在此 collection 的元素上进行迭代的迭代器
 
 */

public class CollectionTest {

 public static void main(String[] args) {
  //创建一个集合容器。使用Collection接口的子类  ArrayList
  ArrayList al=new ArrayList();
  
  //1 添加元素
  al.add("java01");
  al.add("java02");
  al.add("java03");
  al.add("java04");
  
  //打印集合
  sop(al);
  //删除元素
  al.remove("java02");
  //al.clear();//清空集合
  //判断元素
  sop("java03是否存在"+al.contains("java03"));
  
  //2 获取个数
  sop("size:"+al.size());
  
  
 }
 public static void sop(Object obj){
  System.out.println(obj);
 }
}

List:元素有序的。可以重复。因为该集合体系有索引
 特有方法,凡是可以操作角标的都是
 增
 add(int index, E element)
      在列表的指定位置插入指定元素(可选操作)。
   addAll(Collection<? extends E> c)
        添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。
删 
   remove(int index)
          移除列表中指定位置的元素(可选操作)。

   set(int index, E element)
          用指定元素替换列表中指定位置的元素(可选操作)。
 查
    get(int index)
          返回列表中指定位置的元素
    subList(int fromIndex, int toIndex)
          返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。
     listIterator(int index)
          返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始     
 */
public class ListTest {
 public static void sop(Object obj){
  System.out.println(obj);
 }
 
 public static void main(String[] args) {
  ArrayList al=new ArrayList();
  al.add("java01");
  al.add("java02");
  al.add("java03");
  
  sop("元集合是"+al);/**
  //在指定位置添加元素
  al.add(1, "java08");
  al.remove(2);//删除指定位置元素
  al.set(2, "java007");//修改元素
  sop("get(1):"+al.get(1));//通过角标获取元素
  
  sop(al);
  //获取所有元素
  for(int x=0;x<al.size();x++){
   System.out.println("al("+x+")="+al.get(x));
  }*/
  //Iterator方法是有限的只能对元素进行判断,取出,删除的操作其他的要通过ListIterator 方法获取
  ListIterator li=al.listIterator();
  
  while (li.hasNext()){
   Object obj =li.next();
   
   if (obj.equals("java02"))li.add("java008");
   
   }
  //倒序遍历
  while(li.hasPrevious()){
   sop("pre:"+li.previous());
  }
  sop(al);
 }

}

/枚举就是Vector特有的取出方式,和迭代器相似。名称过长就不用了

public class VectorTest {
 public static void main(String args[]){
  Vector v =new Vector();
  
  v.add("java01");
  v.add("java02");
  v.add("java03");
  v.add("java04");

  Enumeration en =v.elements();
  
  while(en.hasMoreElements()){
   System.out.println(en.nextElement());
  }
 }

}

LinkedList 特有方法
 addFirst addLast
 getFirst getLast  元素不被删除
 removeFirst  removeLast 获取元素元素被删除
 NoSuchElementException - 如果此列表为空
  jdk1.6出现了替代方法
 offerFirst  offerLast
 peekFirst  peekLast
 pollFirst  pollLast    
 使用LinkedList模拟一个数据结构堆栈:先进后出
       队列:先进先出
 */
class DuiLie{
 private LinkedList link;
 DuiLie(){
  link=new LinkedList();
  }
 
 public void myAdd(Object obj){
  link.addFirst(obj);
 }
 public Object myGet(){
  return link.removeFirst();//removeLast 先进先出
 }
 public boolean isNull(){
  return link.isEmpty();
 }
}
public class LinkedListTest {
 public static void main(String[] args) {
  DuiLie d1 =new DuiLie();
  
  d1.myAdd("java01");
  d1.myAdd("java02");
  d1.myAdd("java03");
  d1.myAdd("java04");
  while(!d1.isNull()){
  System.out.println(d1.myGet());}
 }
}