Java开发——25.Collection单列集合_List\Set+Collections

集合的体系:

集合可以分为两大类(都是java.util包下的):单列集合(Collection)双列集合(Map)

在这里插入图片描述

List集合:

有序集合(也称为序列 )。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。

List子接口集合特点存储元素有序,元素可重复(底层是数组存储,有索引区分相同值);
List子接口集合主要的是实现类:ArrayList、LinkedList

在这里插入图片描述

ArrayList:

//构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
 //可以实现把List集合放在Set集合中,显示为无序
 //可以实现把Set集合放在List集合中,实现使用下标访问Set集合中的元素,但是注意Set集合只能无序一次
ArrayList(Collection<? extends E> c)//返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
indexOf(Object o)

LinkedList:

双链表实现了List和Deque接口。 实现所有可选列表操作,并允许所有元素(包括null )。
所有的操作都能像双向列表一样预期。 索引到列表中的操作将从开始或结束遍历列表,以更接近指定的索引为准。

//弹栈:从此列表所表示的堆栈处弹出一个元素。
public E pop()//入栈:将元素推入此列表所表示的堆栈。
public void push(E e)
public static void main(String[] args)
 {LinkedList list = new LinkedList();
​
        list.push("a");
        list.push("b");
        list.push("c");//此处不能使用循环的方式进行元素打印,因为pop是弹栈,栈中的元素数量会改变
        System.out.println(list.pop());
        System.out.println(list.pop());
        System.out.println(list.pop());
        
 }/*
输出结果:(采用堆栈的方式进行数据的存储,)
c
b
a
*/

Vector:

Vector类实现了可扩展的对象数组。 像数组一样,它包含可以使用整数索引访问的组件。 但是, Vector的大小可以根据需要增长或缩小,以适应在创建Vector之后添加和删除项目。

//往集合中添加内容(该类特有)
   vt.addElement();//获取取集合中的内容
        Enumeration en = vt.elements();
        //遍历取值
        while(en.hasMoreElements()){Object obj = en.nextElement();System.out.println(obj);}

ArrayList、LinkedList以及vector的区别:

==ArrayList ==底层用数组存储内容,添加和删除数据慢,查询数据快,线程不安全
LinkedList 底层使用双链表存储内容,添加和删除数据快,查询数据慢;
vector底层使用数组,线程安全,效率低。

Set集合:

不包含重复元素的集合。 更正式地,集合不包含一对元素e1和e2 ,使得e1.equals(e2) ,并且最多一个空元素。
Set子接口集合特点存储元素无序,元素不可重复(没有索引区分,所以值唯一);
Set子接口集合主要的实现类:HashSet、LinkedHashSet
Set集合只能把数组无序一次,并不能实现多次将同一个Set集合中的元素实现多次无序。

HashSet:

此类实现Set接口,由哈希表(实际为HashMap实例)支持。 对集合的迭代次序不作任何保证; 特别是,它不能保证订单在一段时间内保持不变。 这个类允许null元素,但只有一个null元素。

HashSet底层如何实现数据不重复,就是采用了HashMap的原理,在后续学习HashMap的时候就会解开神秘的面纱。

注意:==“对集合的迭代次序不作任何保证”==是存储顺序和打印顺序不一致,无法实现已知的元素输出顺序,完全随机,并只随机一次。

LinkedHashSet:

哈希表和链表实现了Set接口,具有可预测的迭代次序。 这种实现不同于HashSet,它维持于所有条目的运行双向链表。 该链表定义了迭代排序,它是将元素插入集合(插入顺序 ) 的顺序 。

TreeSet:

以 二叉树的形式进行数据记录。该集合不允许存null;
该集合中值,会根据自然排序法进行顺序排列。

List集合和Set集合的相互转换:

  public static void main(String[] args) {//list --> set
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("b");
        Set<String> set = new HashSet<>(list);System.out.println("====================");//set --> list
        Set<String> sets = new HashSet<>();
        sets.add("a");
        sets.add("b");
        sets.add("c");List<String> lists = new ArrayList<>(sets);
    }

Collections:

Collections,集合的工具类,注意后续学习的Map集合也是可以使用的,它是集合的工具类!

此类仅由静态方法组合或返回集合。 它包含对集合进行操作的多态算法——“包装器”,返回由指定集合支持的新集合,以及其他一些可能的和最终的集合。

//将指定的列表按升序排序
public static void sort(List<T> list)//反转指定列表中元素的顺序
public static void reverse(List<?> list)//获取集合中最大值/最小值
public static void max()
public static void min()public static void main(String[] args) {//创建集合对象
        List<Integer> list = new ArrayList<Integer>();//添加元素
        list.add(30);
        list.add(20);
        list.add(50);
        list.add(10);
        list.add(40);// 将指定的列表按升序排序
        Collections.sort(list);//反转指定列表中元素的顺序
        Collections.reverse(list);//获取集合是最大值
        Integer max = Collections.max(list);
        System.out.println(max);//50//获取集合是最小值
        Integer min = Collections.min(list);
        System.out.println(min);//10System.out.println(list);
    }
}

collection和collectons的区别?

Collection 是一个集合接口 == 它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
Collections 是一个
操作集合的工具类==。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

欢迎关注微信公众号:小红的成长日记,一起学Java!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值