黑马程序员-集合(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

引用:java.util.Collection

为什么要出现集合:

Java是纯面向对象语言,而面向对象语言对事物的体现就是以对象的形式存在的。因此我们想对对象进行操作,就要对对象进行储存,那么聚合就出现了。

数组和集合类同样是容器。有什么不同?

数组虽然是可以存储对象,但是长度是固定不变得。集合的长度可以动态改变的。数值是可以存储基本数据类型,集合只能存储对象。(如String)

黑马程序员-集合(一)_第1张图片

Collection的两个常用子接口

  • List(列表):

List<E>有序的 collection(也称为序列)。实现此接口可以对每一个列表精确的控制。元素可以重复。因为该集合体系有索引

ArrayList:底层的数据结构使用的是数组结构,特点:查询速度比很快,但是删除速度稍慢,因底层是数组的数据结构,只能通过角标索取,当我们删除一个元素的时候后面的元素都要向后移动,线程不同步。

LinkedList:底层使用的链表的数据结构,特点是增删的熟读快。但是查询的速度稍慢。

Vector:底层是数组数据结构,线程同步。(现在很不用了)

 

  • Set(集合):

Set<E>一个不包含重复元素的 collection。set 不包含满足 e1.equals(e2) 的元素对 e1e2,并且最多包含一个 null 元素。

HashSet:数据结构是哈希表,

保证元素唯一性的原理,判断hashCode的值是否想相同,如果相同,还会继续判断元素的equal方法,否则返回true

Treeset:基于 TreeMapNavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。

底层数据结构是二叉树,保证数据唯一性的依据是:compareTo方法值得return的返回值。

方法摘要(添加,删除)

返回值 方法名 解释
boolean add(E e) 添加对象
boolean addAll(Collection<? extends E> c) 添加Cllection
boolean remove(object o) 移出指定元素
boolean removeAll(Collection<?> c) 移除Collection指定的所元素
Iterator<E> iterator() 获得两个集合交集的迭代器,就是生成两个集合的相同的元素
void clerar 删除集合的所有的元素

 

获取元素的思路:就是判断和取出 实现Iterable<T>

所有的集合都需要一些取出方式,所以他们就会有一定的共性,那么我们就把他定义成为在集合的内部,

那么我们把他定义成为内部类,就可以对集合的元素进行操作。 所以就抽取出了一个

接口:Iterable<T> (迭代器)ListIterable出现了以后就可以对List集合进行增删除改查。

实现这个接口允许对象成为 "foreach" 语句的目标

Iterator<T> interitor() 返回一组T类型上进行迭代的迭代器

迭代器方法摘要

boolean hasNext 如果仍然有元素可则返回true
E next() 返回下一个迭代的元素
void remove() 从迭代器指向Collection中的元素移除

改:

E set(int index ,E element 用指定元素替换列表中指定位置的元素

List集合当中方法摘要的特别之处:List对象 是有索引的。都带脚标。

查:

E get(int index ) 返回列表中指定位置的元素。

具体放方法的查看,API文档:http://www.w3cschool.cc/manual/jdk1.6/

 

迭代器的使用方法

package com.text;

import java.util.ArrayList;
import java.util.Iterator;

public class List
{
    
    public static void main(String[] args)
    {
        //创建长度为10的
        ArrayList lang = new ArrayList();
        lang.add("abc1");
        lang.add("abc2");
        lang.add("abc1");
        lang.add("abc2");
        lang.add("abc1");
        lang.add("abc3");
        lang.add("454");

        
    }
    //去除重复元素的方法
    public static ArrayList singleElement( ArrayList al)
    {
        //用到conkd
        ArrayList newAL = new ArrayList();
        //创建查找。 如果第一次存在我我们记录。如果在有同样的内容我们就不添加
        //创建迭代器我们反复的查找
        Iterator it= al.iterator();
        while(it.hasNext())
        {
            Object ob = it.next();
            if (!newAL.contains(ob))
            {
                //如果新的没有我们就添加。有就不添加
                newAL.add(ob);
            }
        }
            
        return newAL;
    }

}

你可能感兴趣的:(程序员)