集合知识点(一)

集合

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


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 另一个类或内部类

猜你喜欢

转载自www.cnblogs.com/-Archenemy-/p/11992913.html