Java教程

集合框架

本文主要是介绍集合框架,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

集合框架

在这里插入图片描述

ArrayList

  • ArrayList 存储原理是一个object类型的数据,通过Arrays.copyOf对数组进行扩容和收缩

理解:

集合没有固定长度:
在这里插入图片描述
常用方法
在这里插入图片描述
在这里插入图片描述

1. 集合和数组的相互转换

  • ArrayList 存储原理是一个object类型的数据,通过Arrays.copyOf对数组进行扩容和收缩
  • toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。
public class Hello {
    /*
    * ArrayList 存储原理是一个object类型的数据,通过Arrays.copyOf对数组进行扩容和收缩
    * */

    public static void main(String[] args) {
        fun2();
    }
    
    
    
    private static void fun2() {
        //2.数字--->集合
        //Arrays.asList() 将数组转化成List集合的方法
        Object[] objs =new Object[] {"hello","hello2"};
        List list = Arrays.asList(objs);
        System.out.println(list);

    }

    private static void fun1() {
        //1.集合--->数组
        ArrayList list  =new ArrayList();
        list.add(145655);
        list.add("大家好");
        System.out.println(list);
        //无参
        Object[] o = list.toArray();

        //toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。
        //List.toArray() 有参数时 仅仅利用数组长度
        Object[] objects = new Object[10];
        Object[] objs = list.toArray(objects);
        System.out.println(Arrays.toString(objs));
    }
}

2. 遍历集合

public class Hello2 {
    public static void main(String[] args) {
		ArrayList list=new ArrayList<>();
        list.add("hello");
        list.add("hello2");
        System.out.println(list);

        //普通for循环 适用于有下标的有序集合
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
        //增强for循环 和 迭代器原理一致的 适用于所有集合
        for(Object o:list){
            System.out.println(o);
        }
        //迭代器 iterator通常与while结合
        Iterator it = list.iterator();
        while(it.hasNext()){           //it.hsNext:是否有元素 有就取出来
            System.out.println(it.hasNext());
       }
    }
}   

LinkedList

存储原理是一个链表,在元素的前后分别有一个前置结点和后置结点,用于连接集合中的上一个元素和下一个元素,依次“手拉手”,构成一条链式数据的集合。

  • 特有的方法
    在这里插入图片描述
public class Hello1 {
    	public static void main(String[] args) {

        LinkedList list = new LinkedList();
        list.add("985");
        list.add("共产党万岁");
        list.addFirst(100);                    //将指定元素插入当前集合头部
        list.addLast(77);                      //将指定元素插入当前集合尾部

        System.out.println(list.getFirst());   //获得当前集合的首元素
        System.out.println(list.getLast());    //获得当前集合的最后一个元素
        System.out.println(list.removeFirst());//移除并返回当前集合的首元素
        System.out.println(list.removeLast()); //移除并返回当前集合的最后一个元素
        System.out.println(list);
    }
}

LinkedList的addFirst方法源码分析在这里插入图片描述
在这里插入图片描述
Node结点分析在这里插入图片描述
链表结构分析在这里插入图片描述

Set集合

  1. Se接口特点:
    存储一组唯一(不允许出现重复的元素),无序(没有index下标)的对象,HashSet是Set接口常用的实现类。
public class Hello {
   		public static void main(String[] args) {
        /*
        存储一组唯一(不允许出现重复的元素),
        无序(没有index下标)的对象,HashSet是Set接口常用的实现类。
        */
        HashSet set = new HashSet();
        set.add("共产党万岁");
        set.add(6);
        set.add(6);
        set.addAll(new HashSet());
        set.addAll(new LinkedList());
        set.remove(6);
        System.out.println(set);
        System.out.println(set.size()); //去掉重复
    }
}
这篇关于集合框架的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!