JAVA学习(集合类:list,Set)

2021/4/10 22:11:35

本文主要是介绍JAVA学习(集合类:list,Set),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、集合类

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象的一种方式。

 

特点:

1.用于存储对象的容器

2.集合的长度是可变的

3.集合中不可以存储基本数据类型值。

集合只用于存储对象,集合的长度是可变的,集合可以存储不同类型的对象。

 

集合容器因为内部的数据结构不同,有多种容器。不断地向上抽取,就形成了集合框架。

框架的顶层Collections:

Collections的常见方法:

1.添加:

  boolean add(E e);

  boolean addA(Collection coll);

2.删除:

  boolean remove(Object o);

  boolean remove(Collection coll);

  void clear();

3.判断:

  boolean contains(Object o);

  boolean containsAll(Collection c);

  boolean isEmpty();    //判断集合中是否有元素

4.获取:

  int size();  //获取集合中元素个数

  iterator iterator();   //取出元素的方式,迭代器

5.其他:

  boolean retainAll(Collection coll);      //取交集,取两个集合中相同的元素,删除不同的元素

  Object[] toArray();         //将集合转换为数组。

 

取出元素的方法:iterator iterator();   //迭代器

该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。

所以该迭代器对象是在容器中进行内部实现的。

对于使用容器者而言,具体的实现不重要,只要通过容器获取到实现的迭代器的对象即可。

也就是iterator方法。

Iterator接口就是对所有的Collection容器进行元素取出的公共接口。

 

接口Iterator中的方法:

1.  boolean haxNext();           //如果仍有元素可以迭代,则返回true

2.  E next();    //返回迭代的下一个元素

3.  void remove();     //从迭代器指向的collection中移除迭代器返回的最后一个元素

 

Collections下有两大接口:

1.List:有序(存入和取出的顺序一致),元素都有索引。元素可以重复

2.Set:元素不能重复,无序,

 

二、List接口

 1.添加:

  void add(index,element);

  void add(index,collection);

2.删除:

  Object remove(index);

3.修改:

  Object set(index,element);

4.获取:

  Object get(index);

  int indexOf(object);

  int lastIndexOf(object);

  List subList(from,to)

 

注意:在迭代器过程中,不要使用集合操作元素,容易出现异常。

可以只用Iterator接口的子接口ListIterator来完成迭代中对元素进行更多的操作。

List接口的迭代器:ListIterator接口

它可以实现在迭代过程中完成对元素的增删改查,只有List集合具备该迭代功能。

 

List下常用的三个容器:

1.Vector:可以实现可增长的对象数组,其内部是数组数据结构,是同步的。

2.ArrayList:内部是数组数据结构,是不同步的。(替代了Vector)

3.LinkedList:内部是链表数据结构,是不同步的。

addFirst();                  getFirst();

addLast();     getLast();

jdk1.6之后-------------------------------------

offerFirst();      peekFirst();

offerLast();      peekLast();

 

三、Set接口

Set接口中的方法和Collection一致;

 Set下常用的两个容器:

1.HashSet:   

HashSet集合数据结构是哈希表,所以存储元素的时候,使用的是元素的hashCode方法来确定位置。是不同步的。

哈希表:

(1)判断的是两个元素的哈希值是否相同。如果相同,在判断两个对象的内容是否相同。

(2)判断哈希值是否相同,其实使用的是对象的hashCode的方法。判断内容相同,使用的是equals方法,如果内容不同,不需要判断equals方法。

 

注意:

如果元素存储到HashSet集合中,必须覆盖hashCode方法和equals方法。

 

LinkedHashSet:

具有可预知迭代顺序的Set接口的哈希表和连接实现。

 

2.TreeSet:

可以对set集合中的元素进行排序,是不同步的。

其判断元素唯一性的方式,就是根据比较的方法的返回结果是否是0,是0,则元素相同。

 

TreeSet对元素进行排序的方式一:

让元素自身具备比较功能,元素需要实现Comparable接口,并覆盖compareTo方法

如果不需要按照对象中的自然顺序进行排序。如果对象中不具备自然顺序。

 

使用TreeSet集合的第二种排序方法,方法二

让集合自身具备比较功能。定义一个类来实现Comparator接口,覆盖compare方法。

将该类对象作为参数传递给TreeSet集合都构造函数。

例如:

创建一个自己的比较器类来实现TreeSet中的比较器功能。

import java.util.Comparator;

public class ComparatorByName implements Comparator {
    public  int compare(Object o1,Object o2){
        
        //实现代码
        return 0 ;
    }
}


import java.util.Iterator;
import java.util.TreeSet;

public class TreeDemo {
    public static void main(String[] args) {
        TreeSet ts = new TreeSet(new ComparatorByName());   //将自己定义的比较器,作为参数传入。

}

 



这篇关于JAVA学习(集合类:list,Set)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程