容器(list集合)

时间:2023-12-04 21:40:32

--为什么使用集合而不使用数组?why

·集合和数组相似点:都可以存储多个对象,对外作为一个整体存在;

··数组的缺点:1.长度必须在初始化时指定,且固定不变;

2.数组采用连续存储空间,删除和添加元素效率低下;

3.数组无法直接保存映射关系;

Connection 接口存储一组不唯一,无序的对象;

List 接口存储一组不唯一,有序(索引顺序)的对象;

Set接口存储一组唯一,无序的对象;

Map接口存储一组键值对象,提供key到value的映射;

-----  Key 唯一,无序;  value不唯一,无序;

<List集合>---------------------------------是collection集合的子接口;

特点:有序,不唯一(可重复);

ArrayList:--在内存中分配连续的空间,实现了长度可变的数组;

--优点:遍历元素和随机访问元素的效率表较高;

--缺点:添加和删除需大量移动元素效率低,按照内容查询效率

LinkedList:--采用链表存储方式。

--缺点:遍历和随机访问元素低下。

-- 优点:插入、删除元素效率比较高(但是前提也是必须低效率查询)

集合当中常用到的方法:------增----删----改-----查------

1.添加的方法:add(int index,E e);    ---->在制定位置进行添加元素。

addAll(Collection c);---->添加全部。

2.删除的方法:remove(int index);---->根据角标位置删除元素

remove(Object obj);---->根据内容进行删除元素

removeAll(Collection c);---->删除集合

3.修改的方法:set(int index,E element);

4.查询的方法:get(int index);根据角标进行查询元素

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

5.获取集合大小的方法---->size();

6.判断集合是否为空的方法---->isEmpty();

7.清除集合当中所有的元素的方法---->clear();

8.集合和数组之间能否转换

集合---------->数组转换        toArray()                  <T> T[] toArray(T[] a)

迭代器输出的原理:先判断集合当中是否有元素,如果有则进行获取,反之,循环结束。

public class ArrayListTest {
    public static void main(String[] args) {
        //1.实例化List接口对象
        List<String> list = new ArrayList<String>();
        //2.添加的方法
        list.add("javaSE");
        list.add("javaEE");
        list.add("HTML5");
        list.add("CSS3");
        list.add("JavaScript");    
        //遍历集合元素
        System.out.println("---------------标准for循环---------------");
        for(int i=0;i<list.size();i++) {
            //i变量相当于角标   最大角标:list.size()-1;
            //list集合当中存在一个get(int index)
            System.out.println(list.get(i)+"\t");
        }
        System.out.println();
        System.out.println("--------------增强for循环---------------");
        for (String str : list) {
            System.out.println(str+"\t");
        }
        System.out.println();
        System.out.println("--------------迭代输出Iterator---------------");
        Iterator<String> iter = list.iterator();
        while(iter.hasNext()) {
            System.out.println(iter.next()+"\t");
        }
    }
}