Java-Collection

容器的长度可以变化。

                                   Collection(I)                                                             Map(I)

          Set(I)                                   List(I)

HashSet(C)               ArrayList(C)       LinkedList(C)

**:I=Interface     C=Class


Set(集合) :无序(无索引),唯一。

List(列表):有序,可重复。


List比Set多了索引,在指定索引位置插入数据;查找指定索引上的数据;删除指定索引上的数据;退换指定索引上的数据。


ArrayList:查快改慢

LinkedList:改快查慢


容器的迭代

容器的迭代必须使用迭代器完成

Iterator接口

每个实现了Collection接口的类都能通过iterator方法来获得此容器的迭代器。

只有Iterator中的remove()方法才是迭代过程中最安全的删除方法,因为加了锁。



Collections类提供了一系列的方法对list进行操作。


comparable接口    

       一个类的对象如果需要比较大小顺序,必须实现次接口。


class Person implements Comparable{  
       public Person(String name,int age){  
              this.name = name;  
              this.age = age;  
       }  
       String name;  
       int age;  
  
        public String toString(){  
               return "name:"+name+"  age:"+age;  
        }  
  
  
         
        public int compareTo(Object o){   
               Person p = null;  
               //判断一个对象是不是一个类或这个类子类的对象  
                if(o instanceof Person){  
                        p = (Person)o;  
                       if(this.age>p.age){   
                               return 1;   
                       }else if{   
                               return -1;  
                       }else{  
                               return 0;  
                       }    
                 }else{   
                       return -1;   
                 }   
          }   
}  



1.增强的for循环,就是.net中的forEach;

   增强的for循环在迭代容器的时候内部依然使用迭代器;

   增强的for循环只能做简单的遍历


2.泛型

   1)普通的容器可以放任意数据类型,没有意义。

   2)在拿出容器元素的时候都是Object,要向下转型。




自定义泛型

     泛型中不存在父类引用指向子类对象的概念的。


   

import java.util.*

public class Test{
  public static void main(String[] args){
    List<Integer> i1 = new ArrayList<Integer>();    
    i1.add(10);
    i1.add(20);

     List<Double> i2 = new ArrayList<Double>();    
     i2.add(10.1);
     i2.add(10.2);
     m(i1);
     m(i2);
     }

    //自定义了一种类型,这个类型的名字叫T
   //在当前方法中出现T的只要数据类型保持一致就可以了
  public static <T> void m(List<T> t){
    for(T i;list){
    System.out.println(i);
    }
  }
}

 
 
 
 
 
 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值