集合知识点

Posted -archenemy-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合知识点相关的知识,希望对你有一定的参考价值。

集合

技术图片

集合的作用类似于数组但是,集合相对于数组来说,有着长度自动可变的有点。对于集合来说,其底层代码也是以数组的形式存储,只不过在集合中数组的长度会根据数据的多少自动变化。

?

?

ArrayList

技术图片

技术图片

格式:

 ArrayList<Object> list = new ArrayList<Object>();
 //或者
 List<Object> list = new ArrayList<>();
 //父类指向子类对象
     //java.util包中
     //在ArrayList<Object>()的括号中可以输入任意的数,但是没有意义。
     //E Object

查询长度

 list.size();
     //返回集合的长度,数组中通过.lenght属性

增删改查

1.增
 list.add(number);
     //可以添加任意类型(包括null),添加的数据可以重复
 list.add(index,element);
     //index为插入的位置,element为插入的数据值
     //需要注意的是index的取值范围是[0~list.size()]
     //结果是element放入index位置,该位置的数以及后续的数值向后移。
     //(index=list.size(),是直接放在最后)。不允许跳跃着传入数据

 

2.删
 list.remove(number);
     //删除number对象
     //当number为int类型的数时,调用的是remove(int index);
     //当要删除整数时我们需要传入整数的封装类Intgeter,
   //及remove(new Intgeter(number));
list.remove(int index); //该方法根据下标的位置删除对象。 //取值范围[0~list.size())

 

3.改
 list.set(index,element);
     //index为修改的位置,element为修改的数据值
     //取值范围[0~list.size())
4.查
 list.indexOf(number);
     //在list中查询number找到返回下标,没找到返回-1;
     //如果上面添加了null,那么在这里也可以找到。
 list.LastIndexOf(number);
     //在list倒叙中查询number找到返回下标,没找到返回-1;
 list.contains(number);
     //list中查询number找到true,没找到返回false;

判断为空

 list.isEmpty();
     //返回false不为空
 list.size();
     //!=0不为空

清空元素

 list.clear();
     //清空所有元素
?

?

ArrayList、Vector与Stack

技术图片

技术图片

  1. API基本一样,底层都是数组的实现

  2. Vector的方法都是线程安全的,这意味着慢/ArrayList没有考虑线程

  3. 相对于Vector,ArrayList在一些算法上做了优化


 

LinkedList与ArrayList

技术图片

技术图片

  1. 数据的结构不同

    ArrayList底层是连续的数组 /查、改快;

    LinkedList底层是双向链表 /删、增快;

  2. LinkedList对于增加、删除的首尾有单独的操作方法

     addFirst();
     addLast();
     removeFirst();
     removeLast();
  3. LinkedList与ArrayList类中的元素都可以通过.get(下标)的方式调用

?

?

List与Set接口

技术图片

技术图片

List接口Set接口
1.有序 1.无序
2.有下标 2.无下标
3.可重复 3.不可重复
?

?

HashSet

技术图片

技术图片

格式:

 HashSet set = new HashSet();
 //对于HashSet来说add()不可以添加前已经出现的元素,
//如果添加的元素已经出现则不添加值返回false
//通过调用HashCode()与equals()方法比较

HashSet的显示

  1. 增强for循环/foreach

     for(Object obj : set){
     //迭代
         System.out.println(odj);
     }
  2. Iterator接口(迭代器)

     Iterator it = set.iterator();
     while(it.hasNext){
     //判断是否有下一个  
         Object odj = it.next();
         //得到下一个
         System.out.println(odj);
     }

Hash/哈希

优点:增删改查速度快,提高存储率

缺点:元素不可重复

?

?

TreeSet

技术图片

技术图片

特点:

  1. 有序列表

  2. 加入的对象必须实现Comparable(java.lang包中)接口中的ComepareTo方法

    ComepareTo返回的数值可分为整数、负数、零(可以通过两个数相减)

?

?

元素排序

要求:对List接口下集合

1.Set->List

 List<类> list = new ArrayList<>(set)
 //set指Set接口下的集合类的对象

2.Collections/工具类

技术图片

技术图片

!!!要与Collection相区别,Collection是集合框架的上层接口

3.排序语句

  1.  
    Collections.sort(list);
     //自动排序,要求List中的类实现Comparable接口中的CompareTo方法

     

  1.  Collections.sort(list,(新对象|内部类));
     //要求新对象或内部类实现Comparator接口中的compare方法
?

?

Comparable与Comparator

技术图片

技术图片

接口名所在包接口方法方法参数方法实现的类
Comparable java.lang compareTo 1 实现类实现
Comparator java.util compare 2 另一个类或内部类

以上是关于集合知识点的主要内容,如果未能解决你的问题,请参考以下文章

android小知识点代码片段

金蝶handler中 collection 代码片段理解

Alfred常见使用

比较 C# 中的字符串片段并从集合中删除项目

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]

[ jquery 文档处理 insertBefore(content) before(content|fn) ] 此方法用于把所有匹配的元素插入到另一个指定的元素元素集合的前面,实现外部插入(代码片段