黄沙浩淼吧 关注:13贴子:494
  • 10回复贴,共1

【Java 7 程序设计】11&12 集合框架、泛型

只看楼主收藏回复




IP属地:重庆1楼2013-01-07 14:14回复
    1. **框架概述(属于java.util包)
    (interface) Iterator Collection Comparator
    Collection的子接口
    (interface) Set List Queue Map


    IP属地:重庆2楼2013-01-07 14:19
    回复
      2. Collection接口
      方法:
      add()-添加元素;
      addAll()-添加另一组Collection成员;
      clear()-删除所有元素;
      size()-获取元素数量;
      isEmpty();
      toArray()-将成员移动至一数组中
      3. List和ArrayList (List allows duplicated elements to be added in)
      List方法
      public boolean add(Object element)
      public void add(int index, Object element)
      public Object set(int index, Object element) 替换元素,返回已插入元素的引用
      public Object remove(int index)
      ArrayList
      构造器
      public ArrayList() //初始容量10
      public ArrayList(int initialCapacity)
      静态方法
      asList(Object ... args)


      IP属地:重庆3楼2013-01-07 14:31
      回复
        &#160&#1605.Set & HashSet
        Set表示一个算数集,不能含有重复元素
        如果试图添加重复元素,add()方法将会放回false
        HashSet是Set中最流行的实现,最多允许一个null元素
        创建Set
        Set set = new HashSet();


        IP属地:重庆5楼2013-01-07 14:50
        回复
          &#9&#96. Queue和LinkedList
          补充:List中取元素的方法
          除去使用Iterator和for语句按顺序遍历元素外,可以使用get()方法获取元素,需传入参数index
          Queue的特征:FIFO &#9先进先出 只能在指定位置插入和获取(删除)元素
          Queue添加的方法:
          offer() - 同add() Queue中add()插入元素失败,抛出异常;而offer()则返回false
          remove() - 删除和返回Queue中最前端的元素,如Queue为空,抛出异常
          poll() - 作用同上,如Queue为空,返回null
          element() - 返回但不删除Queue中最前端元素,如Queue为空,抛出异常
          peek() - 作用同上,如Queue为空,返回false
          LinkedList - Queue的一个实现
          一个简单的例子
          Queue queue = new LinkedList();
          queue.add(1);
          queue.add(2);
          queue.add(3);
          System.out.print(queue.poll() + " ");
          System.out.print(queue.poll() + " ");
          System.out.print(queue.poll() + " ");
          输出:
          1 2 3
          注:java.util.Stack类是一个Collection,其行为遵循LIFO


          IP属地:重庆6楼2013-01-07 15:03
          收起回复
            7. Collection转换
            Collection实现一般都有一个接受Collection对象的构造器,使得可以将Collection转换成不同类型的Collection.
            8. Map和HashMap
            Map是保存 key/value 映射对的地方。Map中不能含有重复的key。
            public void put(Object key, Object value)
            public void putAll(Map map)
            public void remove(Object key)
            public Object get(Object key)
            另外有 size(), isEmpty(), keySet(), values(), entrySet()
            实现方法:HashMap和Hashtable


            IP属地:重庆7楼2013-01-07 15:21
            回复
              9. 泛型(Generic)
              泛型:可以理解为General Type,一般类型,或者是通用类型。类似于代数中用字母代替普遍的数,这里用大写单个字母代替普遍的类型,在应用实例中可以对这个类型进行确定。
              例:java.lang.Comparable接口声明
              package java.lang;
              import java.util.*;
              public interface Comparable<T> {
                public int compareTo(T o);
              }
              这里T指代一种类型。当将此接口具体应用到某一类型,例如MyClass上时:
              public class TestClass implements Comparable<MyClass> {
                ...
                public int compareTo(MyClass o){
                  ....
                }
              }
              又如,Map接口的定义:
              public interface Map(K, V)
              其put()和values()的声明:
              public V put(K key, V value)
              public Collection<V> values()
              使用"?"通配符
              如果利用泛型声明了一个变量为
              List<aType> list;
              那么list可以保存的变量类型有:
              a.如果aType是一个类,那么list可以保存aType的一个实例或者其子类的一个实例
              b.如果aType是一个接口,那么list可以保存实现aTyep接口的一个实例
              需要注意的是,List<aType>本身也是一个类型。即使aType是bType的是一个子类,List<aType>和List<bType>也是无关类型。如果想声明一个可以处理任何List<?>类型变量的方法,将其参数声明为List<Object>是没有用的。例如,为了声明一个将List中元素打印出来的方法print(),我们不能写
              print(List<Object> aList)
              而必须写
              print(List<?> aList)


              IP属地:重庆8楼2013-01-07 16:27
              回复
                泛型通配符应用在方法参数类型声明上,在声明或创建一个泛型类型时使用通配符是不合法的,例如
                List<?> myList = new ArrayList<?>();
                而应该
                List<Object> myList = new ArrayList<Object>();
                有界通配符
                GenericType<? extends upperBoundType> //上界,必须为其自身或子类类型
                例如
                List<? extends Number>则只能保存数字,包括整型和浮点型。
                GenericType<? super lowerBoundType> //下界,必须为其自身或超类类型


                IP属地:重庆9楼2013-01-07 16:37
                回复
                  10.对象比较和排序
                  (1)使用静态方法java.util.Arrays.sort()和java.lang.Comparable接口
                  Arrays.sort()对对象数组进行排序,要求对象必须实现Comparable接口。
                  public static void sort(java.lang.Object[] a)
                  public interface Comparable<T> {
                    public int compareTo(T o);
                  }
                  (2)使用java.util.Comparator接口
                  Arrays.sort()方法的另一种形式可以接受一个Comparator接口作为参数,并以此作为排序依据
                  public static <T> void sort(T[] a, Comparator<? super T> c)
                  Comparator接口
                  public interface Comparator<T> {
                    int compare(T o1, T o2);
                    boolean equals(Object obj);
                  }
                  sort方法要求实现接口compare()方法.


                  IP属地:重庆10楼2013-01-07 17:10
                  回复