黑马程序员-集合(一)

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

引用:java.util.Collection

为什么要出现集合:

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

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

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

集合的构成

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的返回值。

方法摘要(添加,删除)

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

 

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

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

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

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

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

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

迭代器方法摘要

booleanhasNext如果仍然有元素可则返回true
Enext()返回下一个迭代的元素
voidremove()从迭代器指向Collection中的元素移除

改:

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

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

查:

Eget(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;
    }

}

转载于:https://www.cnblogs.com/ganwei/p/4559236.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值