Java-集合

2018-07-21  本文已影响22人  PC_Repair
Collection:

在Java类库中,集合类的基本接口是Collection接口,这个接口有两个基本方法:

public interface Collection<E>{
      boolean add(E element);
      Iterator<E> iterator();
      ...  
}   
迭代器:
public Iterator<E>{
    E next();  //反复调用next方法逐个访问集合中的每个元素
    boolean hasNext(); //调用next之前调用hasNext判断
    void remove();
} 

注:Collection接口扩展了Iterable接口,因此对于标准类库中的任何集合都可以使用"for each"循环。

java.util.Collection<E>

java.util.Iterator<E>

Java库中常用的具体集合
集合类型 描述
ArrayList 一种可以动态增长和缩减的索引序列
LinkedList 一种可以在任何位置进行高效地插入和删除操作的有序序列
TreeSet 一种有序集
LinkedHashSet 一种可以记住元素插入次序的集
PriorityQueue 一种允许高效删除最小元素的集合
HashMap 一种存储键/值关联的数据结构
TreeMap 一种键值有序排列的映射表

java中常见的三大集合类

一、List集合

其主要实现类有LinkedList、ArrayList,前者实现了链表结构,后者可代表大小可变的数组。List的特点是能够以线性的方式存储对象,并允许存放重复对象。
List能够利用Collections类的静态方法sort排序。

java.util.List<E>

java.util.ListIterator<E>

//ArrayList
public static void main(String[] args){
    List list = new ArrayList();
    list.add("ab");
    list.add("123");
    list.add(0, "first");
    System.out.println("存放"+list.size()+"个元素");
    list.remove(0);//删除第一个元素
    //查看集合中是否包含ab
    if(list.contains("ab")){
        System.out.println("包含元素ab");
    }
    //取出集合中第二个元素
    System.out.println("第二个元素是:"+list.get(1));
    //取出集合中所有元素
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
}
//LinkedList
public static void main(String[] args){
    LinkedList list=new LinkedList();
    //添加元素
    list.add("abc");
    list.add(123123);
    //将某个元素添加到链表的头部或尾部
    list.addFirst("1111111");
    list.addLast("22222");
    list.add("33333");
    System.out.println("元素个数:"+list.size());
    //取出第三个元素
    System.out.println("第三个元素是:"+list.get(2));
    //取链表头部或尾部的元素。
    System.out.println("第一个元素:"+list.getFirst());
    System.out.println("最后一个元素:"+list.getLast());
    //删除第一个元素
    list.removeFirst();
    for (Object object : list) {
        System.out.println(object);
    }
}
LinkedList
二、Map集合

其主要实现类有HashMap、TreeMap。Map对值没有唯一性要求,对健要求唯一,如果加入已有的健,原有的值对象将被覆盖。HashMap类按照哈希算法来存取键对象,可以重载equals()、hashCode()方法来比较键,但是两者必须一致。TreeMap,可自然排序,也可通过传递Comparator的实现类构造TreeMap。

java.util.Map<K, V>

java.util.Map.Entry<K, V>

public static void main(String[] args) {
        Map<String, Employee> staff = new HashMap<>();
        staff.put("1", new Employee("L"));
        staff.put("2", new Employee("J"));
        staff.put("3", new Employee("F"));
        //print all entries
        System.out.println(staff);
        //remove an entry
        staff.remove("1");
        //replace an entry
        staff.put("2", new Employee("R"));
        //look up a value
        System.out.println(staff.get("2"));
        //iterate through all entries
        for (Map.Entry<String, Employee> entry : staff.entrySet())
        {
            String key = entry.getKey();
            Employee value = entry.getValue();
            System.out.println("key = " + key + ", value = " + value);
        }
    }
三、Set集合

其主要实现类有HashSet、TreeSet。存放对象的引用,不允许有重复对象。

public static void main(String[] args) {
    Set set=new HashSet();
    //添加数据
    set.add("abc");
    set.add("cba");
    set.add("abc");//故意重复
    set.add(123);
    set.add(true);
    System.out.println("集合元素个数:"+set.size());
    //遍历出集合中每一个元素
    Iterator it=set.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
    }
}

1.HashSet(),调用对象的hashCode()方法,获得哈希码,然后再集合中计算存放对象的位置。通过比较哈希码与equals()方法来判别是否重复。所以,重载了equals()方法同时也要重载hashCode()方法。
2.TreeSet(),继承ShortedSet接口,能够对集合中对象排序。默认排序方式是自然排序,但该方式只能对实现了Comparable接口的对象排序,java中对Integer、Byte、Double、Character、String等数值型和字符型对象都实现了该接口。
如果有特殊排序,须重载该接口下的compareTo()方法或通过Comparator接口的实现类构造集合。

上一篇下一篇

猜你喜欢

热点阅读