泛型&集合

来源:互联网 发布:mac 抹掉磁盘名称 编辑:程序博客网 时间:2024/06/06 02:01

一、泛型:

①泛型的定义:可以在类、接口、方法中定义

public class GenericFoo<T> {
    private T foo;
 
    public void setFoo(T foo) {
        this.foo = foo;
    }
 
    public T getFoo() {
        return foo;
    }
}

------------------------------------

public class GenericFoo2<T1, T2> {
    private T1 foo1;
    private T2 foo2;
 
    public void setFoo1(T1 foo1) {
        this.foo1 = foo1;
    }
 
    public T1 getFoo1() {
        return foo1;
    }
 
    public void setFoo2(T2 foo2) {
        this.foo2 = foo2;
    }
 
    public T2 getFoo2() {
        return foo2;
    }
}


②:泛型中的通配符:  ?

? 代表的是未知的类型

extends 和 super 可以指定泛型的使用的范围

import java.util.List;

public class ListGenericFoo<T extends List> {
    private T[] fooArray;

    public void setFooArray(T[] fooArray) {
        this.fooArray = fooArray;
    }

    public T[] getFooArray() {
        return fooArray;
    }
}


③注意事项:

----使用泛型的时候,如果声明及其配置对象时不指明类型的话,默认为Object类型的

---使用泛型可以声明数组,但是不可以建立数组的实例

---自定泛型的时候,类型持有者名称可以使用T,容器的元素可以使用E,键值可以使用K,V ,Annotation可以使用A

---不能将除了null对象以外的对象存入到用了通配符的泛型中

--有static的方法不能使用泛型


二、集合:

-----------------------------------------------------------------------常用的方法--------------------------------------

①Collection中常用的方法(15种):



②List中特有的方法:

void add(int index, Object ele)
boolean addAll(int index, Collection eles)
Object get(int index)
int indexOf(Object obj)
int lastIndexOf(Object obj)
Object remove(int index)
Object set(int index, Object ele)
List subList(int fromIndex, int toIndex)

③TreeSet中的方法:

Comparator comparator()
Object first()
Object last()
Object lower(Object e)
Object higher(Object e)
SortedSet subSet(fromElement, toElement)
SortedSet headSet(toElement)
SortedSet tailSet(fromElement)

④Map中的方法:


-----------------------------------------------------集合的遍历------------------------------------

①collection的遍历

---使用foreach方法:

  例如:

   package onlyfun.caterpillar;
 
import java.util.*;
 
public class EnhancedForDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        List<String> list = new ArrayList<String>();
        
        System.out.println("输入名称(输入quit结束)");
        while(true) {
            System.out.print("# ");
            String input = scanner.next();

            if(input.equals("quit"))
                 break;
            list.add(input);
        }
        
        // 使用foreach来遍历List中的元素
        for(String s : list) {
            System.out.print(s + " ");
        }
        
        System.out.println();
    }
}


---------------------------------

---使用iterator

package onlyfun.caterpillar;
 
import java.util.*;
 
public class IteratorDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        List<String> list = new ArrayList<String>();
        
        System.out.println("输入名称(输入quit结束)");
        while(true) {
            System.out.print("# ");
            String input = scanner.next();
 
            if(input.equals("quit"))
                 break;
            list.add(input);
        }

        // 使用 Iterator 取得元素
        Iterator iterator = list.iterator();        
        while(iterator.hasNext()) { // 还有下一个元素吗?
            // 使用 next() 取得下一个元素
            System.out.print(iterator.next() + " ");
        }
        
        System.out.println();
    }
}

-----

②Map的遍历

---key的遍历  :keySet()  ,返回的是一个Set对象

import java.util.*;

public class Test{

    public static void main(String[] args){
        Map map = new HashMap();
        map.put("aa",32);
        map.put("bb",31);
        map.put("cc",33);

        Set keys=map.keySet();
            for(Object key:keys){
            System.out.println(key);
        }

    }
}

-------------------------------

---value的遍历:values()  ,返回的是一个Collection对象

import java.util.*;

public class Test{

    public static void main(String[] args){
        Map map = new HashMap();
        map.put("aa",32);
        map.put("bb",31);
        map.put("cc",33);

        Collection values=map.values();
            for(Object value:values){
            System.out.println(value);
        }

    }
}

---------------------------------------

---entry的遍历:entrySet()方法,返回的是一个Set对象

import java.util.*;

public class Test{

    public static void main(String[] args){
        Map map = new HashMap();
        map.put("aa",32);
        map.put("bb",31);
        map.put("cc",33);

        Set entrys=map.entrySet();
            for(Object entry:entrys){
            System.out.println(entry);
        }

    }
}


--------------------------------------------------------------------------------变焦知识点和注意事项--------------------------------------

---1、在List中存入的对象是否相同,是用的equals()方法比较的

---2、HashSet中存入的元素,首先根据hashCode()方法确定存储位置,然后再根据equals()方法比较

---3、TreeSet:是根据自定义的顺序遍历的

---4、iterator/next()方法做了两个动作,一个是打印,一个是指针下移。

---5、在Map中加入元素的时候,会调用key所在类的equals方法,判断key值是否相同,相同的话只是加入后者。

---6、Properties类用来处理配置文件。

----------------------------------------------------------------------------------Collections常用的方法--------------------------

排序操作:(均为static方法)
reverse(List):反转 List 中元素的顺序
shuffle(List):对 List 集合元素进行随机排序
sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换

Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最大元素
Object min(Collection)
Object min(Collection,Comparator)
int frequency(Collection,Object):返回指定集合中指定元素的出现次数
void copy(List dest,List src):将src中的内容复制到dest中
boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值








0 0