Java 集合 Collection

Java 集合 Collection
摘要由CSDN通过智能技术生成

2023.02.20 星期一

1 集合 Collection

集合大家可以理解为可变长度的数组。
数组一定开辟大小,长度不可改变。

集合是可以根据向集合中增加数据,自动实现对集合进行扩容。

1.1 集合的功能

集合与数组一样,都是用来保存相同类型的大量数据。
现在使用集合,一般都会与泛型一起使用。使用泛型来约束集合中可以保存的数据类型。

1.2 集合的分类

在Java中根据集合的实现方式分为二个大类。

1 线性集合:java.util.Collection接口
所有集合中的数据都是按自身保存到集合中。
在Collection接口下面还有二个子接口:
java.util.List 有序,可重复。
java.util.Set 无序,不可重复。

2 键值映射:java.util.Map接口
所有集合中的数据(value),在保存到集合中时,都必须创建一个关键字(key)。

在Java集合中常用的接口有三个:List,Set,Map
在这里插入图片描述

1.3 常用的实现类

在这里插入图片描述
1 ArrayList类:线性集合中,使用最多的一个类。就是一个可变长度的数组。
2 LinkedList类:链表方式实现的线性集合。
3 HashSet类:Hash散列。
4 HashMap类:Hash算法的键值映射集合。按键找值。
5 TreeSet类:是一个有序的Set接口的实现类。
6 TreeMap类:是一个有序的Map接口的实现类。

1.4 ArrayList

所有集合就是一个容器。一个保存对象的容器。
针对一个容器对象,常用操作有哪些?放和取。

1 通过构造方法来创建实例。
ArrayList strList = new ArrayList<>();

2 向容器中保存对象。
strList.add(“”);
List集合是有序可重复。必须保证对象在集合中的顺序。
默认以增加顺序为标准。

3 从容器中取对象。
String s = strlist.get(1);
List集合是有序。ArrayList是一个可变长度的数组。
集合中的每个对象,都有自己的索引。按索引取对象。

4 动态获取集合大小
int i = strlist.size();

5 对集合进行迭代
版本一:老的方式

for(int i = 0 ;i < strlist.size();i++){
   
    System.out.println(strlist.get(i));
}

版本二:forEach

for (String str : strlist) {
   
    System.out.println(str);
}
1.5 List集合的排序

本身List集合是有序的。就可以对List集合中的元素进行排序操作。

1.5.1 String类型的集合的排序

针对List集合进行排序的方法是:Collections类的静态方法sort()

Collections.sort(strlist);//排序
System.out.println(strlist);

String类型的集合,为什么能被排序?
排序的前提是 能比较大小。 String类的二个对象之间是可以进行比较的。
String类中比较大小的方法叫
public int compareTo(String anotherString)
返回值:int a.compareTo(b);
=0 a=b
>0 a>b
<0 a<b
String 类的二个对象是通过调用compareTo方法的返回值进行大小的比较的。
String类能被比较大小。这是一种能力。接口代表了一种能力。
是因为String类中实现了Comparable接口。
Comparable接口我们称为比较器接口。

1.5.2 比较器接口

比较器接口,表示了一种可以进行比较的能力。
任何类实现了比较器接口,都表示这个类具备了比较大小的能力。
在集合中进行排序的前提条件是:能比较大小。

在Java中提供了二个比较器接口:
1 Comparable接口(内置比较器接口)
学生在学校默认都是按学号进行排序。
2 Comparator接口(外置比较器接口)
学校运动会。按跑步成绩进行排序。
一次摸底考试,按成绩排序。

1.5.3 内置比较器接口-Comparable

内置:是在实体类内部编写的比较规则。

public interface Comparable<T> {
   
    public int compareTo(T o);
}

让Stu这个需要被比较的类,实现Comparable接口,重写compareTo方法。

public class Stu implements Comparable<Stu>{
   
    private Integer id;
    private String name;
    private Double score;

    @Override
    /**
     * 返回值的作用:
     * >0   说明本对象大于o
     * =0   说明本对象与o相等
     * <0   说明本对象小于o
     */
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值