zoukankan      html  css  js  c++  java
  • Java集合(类)框架(一)

    集合类均在java.util包之下

    集合类方法的功能基本为增、删、改、查,部分外加方法除外(如toArray()、toString()等)

    1.List接口

    底层为Object 数组,存放的数据可以重复,且数据有序储存、排列

    1.1 ArrayList类

    继承AbstracList<E>类,是List接口的实现类

     1.1.1 声明

    根据储存的数据类型可分为泛型和非泛型

    (1)非泛型

    ArrayList list1 = new ArrayList(); 非泛型即没有固定在集合中的数据类型,可添加任意种类数据类型

    ArrayList arrayList = new ArrayList();
    arrayList.add("China");
    arrayLiat.add(10);
    arrayList.add('A');

    (2) 泛型

    ArrayList<E> list1 = new ArrayList<>(); 泛型即定义集合中只能储存E数据类型的数据

    ArrayList<String> arrayList = new ArrayList<>();//jdk1.5及以上等号右侧即可隐式表达数据类型
    arrayList.add("Hello");
    arrayList.add("World");
    //arrayList.add(10);  error!!!

    (3) 泛型VS非泛型

    表面上看,非泛型不仅声明简单而且可以添加多种数据类型,似乎很方便,但是在面对具体需求时则不然,泛型与非泛型的关系就如同杂货店和专卖店一样,各有优势,在一定领域中人们会更倾向于泛型定义

    注:后续皆以泛型声明示例

    方法

    1.1.2增(add)

    (1) add(String e)

    在集合后顺序添加String类型元素e(创建对象list时泛型为String类型)

    (2) add(int index, String element)

    在第index个元素后添加String类型的元素element

    (3) addAll(Collection<? extends String> c)

    将String类型对象名为c的集合中所有元素顺序添加至本集合

    ArrayList<String> list = new ArrayList<>();
    list.add("Matthew");
    list.add("Jason");
    list.add("Robert");
    ArrayList<String> list1 = new ArrayList<>();
    list1.addAll(list);  

    (4) addAll(int index, Collection<? extends String> c)

    将String类型对象名为c的集合中所有元素顺序添加至本集合的第index给元素后

    1.1.2 删(remove, clear)

     

     (1) remove(Object o)

    Object类为类层级结构的根类,可以认为Object类为所有类的父类

    此方法会移除集合中第一个value与o相同的元素

    (2) remove(int index)

    移除集合中第index个元素

    (3) removeAll(Collection<?> c)

    从此集合中删除指定集合中包含的所有元素,即原集合与参数集合取交集后取补集

    ArrayList<String>() list1 = new ArrayList<>();
    list1.add("Hello");
    list1.add("World");
    ArrayList
    <String>() list2 = new ArrayList<>();
    list2.add(
    "World"); list1.removeAll(list2);

    此方法与retainAll(Collection<?> c)刚好相反,retainAll()会留下与c相同的元素,即原集合与参数集合取交集

    (4) removeIf(Predicate<? super String> filter)

    移除集合中满足条件的所有元素

    ArrayList<Integer> list2 = new ArrayList<>();
    list2.add(1);
    list2.add(2);
    list2.add(5);
    list2.add(10);
    list2.add(20);
    list2.add(30);
    list2.removeIf(temp->temp>=10);//print 1
    2
    5

    (5) clear()

    清楚集合中的所有元素

    list.clear();

    1.1.3 改(set)

     将集合中的第index个元素用element替换

    1.1.4 查(get)

     (1) get(int index)

    得到集合中第index个元素

     (2) getClass()

    返回集合所属类

    ArrayList list = new ArrayList();
    list.getClass();
    //printf: class java.util.ArrayList

    1.2 LinkedList 类

    底层为链表

    与ArrayList类所有方法名与用法一致

    声明:

    LinkedList list = new LinkedList();//M1
    LinkedList<E>() list = new LinkedList<>();//M2

    1.3 ArrayList VS LinkedList

    ArrayList 增删块,查询慢

    LinkedList 增删慢,查询快

    二者不同的特性使得人们在不同领域有不同的选择

  • 相关阅读:
    HDU
    HYSBZ
    HDU
    POJ
    HDU
    HDU
    HDU
    「luogu2680」[NOIp2015] 运输计划
    「luogu1417」烹调方案
    网络(最大)流初步+二分图初步 (浅谈EK,Dinic, Hungarian method:]
  • 原文地址:https://www.cnblogs.com/YuanShiRenY/p/SetFrameworkFirLearn.html
Copyright © 2011-2022 走看看