java中的集合框架详细整理_01

  1. Collection(集合框架)

    1. 集合就是数据集合(用来存储数据的集合) ,存放在java.util包中。集合中只能存储引用类型

  2. 为什么要学习java中的集合框架?

        学习数组可以用来存储数据:

             数组的存储数据的弊端:

             a:存储相同数据类型的有序集合(存储的数据是相同类型的)

             b:数组存储数据时 需要指定当前数组的长度而且长度不可变 (定长)

             需求:使用数组存储学生信息 效率变低

             使用数组存储每天的新闻信息

   就是由于在大多数的应用场景中,数据都是动态的,导致数组存储要么浪费空间,要么浪费效率

因此java提供了一套功能强大的集合框架,来帮助存储数据信息。

    3.为什么java提供了这么多集合对象存储数据信息?

   这么多集合对象用来在不同的需求场景使用。

   本质上而言 其实不同的集合对象底层存储实现方案不同 不同的存储结构 适用不同的需求。

 

学习集合类主要是学习1张图,3个知识点,6个接口,9个常用类。

1、1张图

java中的集合框架详细整理_01_第1张图片

2、3个知识点

1:泛型

https://blog.csdn.net/weixin_42371832/article/details/98050396

2:迭代器

  1. 迭代器就是提供的一种方法对一个容器对象中的各个元素进行访问,而不暴露该对象集合的内部细节。
  2. 集合类中有很多种类,每一个都有自己的特点,ArrayList底层维护的是一个数组,LinkedList是链表结构的,Hashset依赖的是哈希表,因为他们的内部结构不同,所以他们的迭代方式也不同。
  3.   Iterable 是java.lang包下的接口  实现改接口都能够作为foreach的目标
  4. Iterator 是java.util包下的一个接口,迭代器用来迭代当前集合对象的ArrayList中通过内部类完成了对于改接口的实现 获取的其实是实现类对象 
  5. 迭代器(iterator[不能支持并发修改] listIterator[支持并发修改])
  6. ListIterator 是一个接口 这个接口可以支持并发修改 内部提供了add set remove方法
  7. 如果对于一个List集合对象要通过使用迭代器做修改(删除、添加、修改)那么请使用ListIterator

3:比较器

treeMap和treeSet如果存储的元素需要按照指定的需求进行排序,创建treeMap和TreeSet对象时 需要指定指定比较器。

1:自定义对象的所属类 实现了内部比较器Comparable接口,重写compareTo方法,不利于后期扩展。

2:要么创建TreeSet对象是 指定外部比较器Comparetor接口 重写compare方法,自定义排序规则  可以随着业务扩展随时变化的。

3、6个接口

1.collection

存储元素的特点:无序,可重复

源码中的定义:

 public interface collection extends Iterable{}

常见方法:

bollean add(object element)

添加一个移元素

bollean remove(obj e)

移除一个元素

bollean contains(obj e)

当前元素是否包含

int size()

元素个数

boolean isEmpty()

是否为空

void clear()

清空所有元素

inerator Iterator()

获得迭代器

boolean addAll(collection c)

将集合c中的所有元素添加到本集合中

boolean removeAll(coll c)

移除交集

boolean containsAll(coll c)

本集合中是否包含集合中的所有元素

boolean retainAll(coll c)

保留交集

Object[] toArray()

转化成object数组

Collection中没有修改元素

由于List、Set是collection的子接口,所以collection中的方法在List、Set的实现类中都存在。

代码示例:

import java.util.ArrayList;

import java.util.Collection;

public class Test01 {

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       //Collection接口指向ArrayList实现类对象

       Collection coll = new ArrayList();

       //添加元素

       coll.add("jsp");

       coll.add("java");

       coll.add("css");

      

       System.out.println("coll中的元素:"+coll);

      

       Collection colle = new ArrayList();

       colle.add("css");

       colle.add("jsp");

       colle.add("java");

      

       System.out.println("colle中的元素:"+colle);

       System.out.println("coll中添加colle添加的对象:"+coll.addAll(colle));

       System.out.println("coll中的元素:"+coll);

      

       //删除元素

       //coll.clear();

       //System.out.println("coll中的元素:"+coll);

//     System.out.println("移除coll中的php一个元素"+coll.remove("php"));

//     System.out.println("coll中的元素:"+coll);

//    

//     System.out.println("移除coll中的所有colle中的元素"+coll.removeAll(colle));

//     System.out.println("coll中的元素:"+coll);

       //查看元素

        System.out.println("输出colle和输出collcolle相同的元"+coll.retainAll(colle));

       System.out.println("coll中的元素:"+coll);

      

       System.out.println("查看当前集合是否为null"+coll.isEmpty());

       System.out.println("查看当前集合元素的个数:"+coll.size());

       System.out.println("查看当前集合是否包含元素java:"+coll.contains("java"));

       System.out.println("查看当前coll是否包含colle:"+coll.containsAll(colle));

    }

}

迭代方式:

  1. foreach,Iterator

代码示例:

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

 

public class Test02 {

 

    public static void main(String[] args) {

       //创建集合对象

       Collection coll = new ArrayList();

      

       //添加元素

       coll.add("String");

       coll.add("Scanner");

      

       //迭代元素

       //foreach循环迭代

       for(Object obj:coll) {

           String str = (String)obj;

           System.out.println(str);

       }

       //iterator迭代器

       Iterator it = coll.iterator();//实现类对象

       while(it.hasNext()) {

           System.out.println(it.next());

       }

       //Iterator 迭代器的变种写法

       for(Iterator it1 = coll.iterator();it1.hasNext();) {

           System.out.println(it1.next());

       }

   

    }

 

}

2.List

       存储特点:有序 可重复 可以是null值

       源码中的定义:public interface List extends Collection

       常见方法:(这里包含collection中的所有方法,请查看collection的常用方法)

add(index,obj)

在索引位置添加值

addAll(index,coll)

将指定集合中的所有元素,插入到指定索引位置

remove(index)

删除索引位置的内容

set(index,obj)   

修改索引位置的元素

subList(sindex,eindex)

返回开始索引位置到结束索引位置的部分内容

get(index)

获得指定索引的元素

indexOf(obj)

返回此列表中第一次出现指定元素的索引,如果此索引列表不包含改元素,则返回-1

lastIndexof(obj)

返回此列表中最后一次出现指定元素的索引,如果此索引列表不包含改元素,则返回-1

代码示例:

java中的集合框架详细整理_01_第2张图片

迭代方式:

普通for循环,foreach,Iterator

代码示例:

java中的集合框架详细整理_01_第3张图片

    3.Set:

           存储特点:无序 唯一

           源码中的定义:public interface Set extends Collection

           常见方法:(常见方法和collection一样,请参考collection的方法)

           迭代方法:(和collection一样)

              foreach、迭代器

4.Map

        存储特点:k-v  键值的方式存储

(k:唯一无序 (set)  v 无序可重复 (和collection一样))

常见方法:

put(k,v)

添加键和值

get(k)

通过键获取对应的值

containsKey(k)

查看键是否存在

keySet()

获取键

remove(k)

通过键删除键和值

size()

获取元素的个数

containsValue(v)

查看值是否存在

values()

获取值

 

代码示例:

java中的集合框架详细整理_01_第4张图片

迭代方式:

    迭代1:获取键,迭代键的过程中通过get方法获取值

    迭代2:迭代所有的值

    迭代3:获取entry对象,通过getKey和getValue获取键和值

  

java中的集合框架详细整理_01_第5张图片

      

       5.迭代器接口:(就是上面讲的迭代器)

           Iterator  用来迭代元素

           Iterable  可以作为foreach的目标

      

       6.比较器:(就是上面键的比较器)

           内部比较器

           外部比较器

9个常用类请看下一章

你可能感兴趣的:(java,java中的集合框架,整理的java集合框架,collection)