十三、集合

一、定义

集合:在程序中可以保存数目不确定的对象,可以存储任意类型的对象,并且长度可变
位于java.util包内

二、分类

一、单列集合Collection

                       Collection
         List                           Set
ArrayList   LinkedList  Vector       HashSet   TreeSet
                                     LinkedHashSet

  1、List(为接口,要在实例化中进行操作以下两个就为实例化)

        1)ArraryList
底层是数组结构实现的,数组有索引,查询速度比较快,增删比较慢
使用场景:如果大量的数据经常做查询的操作,优先使用ArrayList

//1.创建容器

ArrayList<String>l1=new ArrayList<>();

<数据类型>这个为泛型

          约束集合可以存储的数据类型

//2.向集合中添加数据

l1.add(Object o);
void add( int index,Object element)  向指定索引位置添加元素

//3.查看集合长度

l1.size();

//4. 删除指定索引处的值,放回被修改的元素 

l1.remove(0);

//5.查询指定元素第一次出现索引的位置

int indexOf(Object o) 

//6.查询指定元素最后一次次出现索引的位置

int lastIndexOf(Object o) 

//7.获取指定索引范围的集合元素,返回新的集合

List subList (int fromIndex,int toIndex)

//这个索引范围 包括前一个数,不包括后一个数【 1,3  )

//8.返回指定索引位置处的元素。

Object get(int index)

其他方法可以查看API查看

        2)LinkedList

LinkedList类是List接口的一个具体实现类

LinkedList 类用于创建链表数据结构

插入或者删除元素时,它提供更好的性能

 

   2、Set

Set接口存储一组唯一,无序的对象、没有索引

HashSet、TreeSet是Set接口常用的实现类 

        1 ) HashSet
HashSet  元素唯一  底层是哈希表的
HashSet 元素不可重复 无序 也就是没有索引
//元素唯一的原理
1.根据对象的哈希值(是调用Hashcode)来计算存储的位置
2.判断当前位置是否有数据
   2.1没有:直接存储
   2.2有  调用equals()方法来比较属性值
        2.2.1属性相同    不存储
        2.2.2属性不相同    以链表结构来存储
如果是自定义类型的对象 保存到HashSet集合,必须重写hashcode()和equals()方法
LinkedHashSet 可以保证元素的存储顺序
         2 ) TreeSet
TreeSet    使用二叉树的方式(红黑树)可以对元素进行排序 升序或者降序
TreeSet   对容器中保存的元素进行排序
自然排序
        在使用非常用数据类型时 需要添加compareTo接口,重写compareTo方法
            编写排序规则
                 返回值特点
                       1.返回值为负数、向左存
                       2、返回值是0,不存储
                       3、返回值是正数,向右存
比较器排序

二、双列集合Map

 用于存储键(key)值(value)映射关系的元素,每个元素都包含一对键值

三、总结

遍历:

     1、普通for循环

     2、增强for循环

     3、迭代器遍历

     4、键值对

List:因为底层数据结构,1、2、3都可以使用

Set:因为没有索引,只能使用2、3

Map:2、3、4

1、普通for循环

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

2、增强for循环

for(String a:l1){
  System.out.println(a);
      
}

3、迭代器遍历

迭代器遍历集合
      Iterator 集合对象.iterator()  获取迭代器对象
      成员方法:
           boolean  hasNext         判断是否还有元素
           E next()                  获取当前元素
           void remove()              删除当前元素
 public static void main(String[] args) {
        ArrayList<String>l1=new ArrayList<>();
        l1.add("张三");
        l1.add("李四");
        l1.add("王五");
        Iterator<String>it =l1.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

 

4、键值对

  Set<Map.Entry<String,Student>> keyValues =hashMap.entrySet();
        for(Map.Entry<String,Student> me :keyValues){
            //获取键
            String key =me.getKey();
            //获取值
            Student student  =me.getValue();
            System.out.println(key+"-"+student.getName());
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值