java ---------- 集合(二) Set 接口和Iterator 接口

Set 接口:

Set接口也是Collection 的一个子接口,它主要有两个实现类:HashSet 类和 TreeSet类。HashSet用的稍微多点

特点:集合中额对象不按特定的方式排序,不能保存重复的对象(重复了怎么弄得清),简单说就是可以存储一组唯一、无序对象。

HashSet 类:

特点:

1、查找效率高 ,按照Hash 算法进行存储数据。

2、集合内元素是无序排列的。

3、是非线程安全的,不能保持同步,多个线程同时访问或修改一个 HashSet,则必须通过代码来保证其同步

4、允许集合元素为 null

 

常用方法:

  增加 boolean add(Object o)  ,

   删除所有  void clear()

  删除指定  boolean remove(Object o)

  返回数量   int size()

  判断指定元素有没有  boolean contains(Object o)

  判断集合中有没有元素   boolean isEmpty()

package com.obge.boge;

import com.obge.model.Animal;

import java.util.HashSet;
import java.util.Set;

public class HashSetStu {

    public static void main(String[] args) {
        Animal animal1 = new Animal("dog1",2,"n1");
        Animal animal2 = new Animal("dog2",1,"n1");
        Animal animal3 = new Animal("dog3",3,"n1");
        Set hashSet = new HashSet();
        hashSet.add(animal1);
        hashSet.add(animal2);
        System.out.println("元素中有:"+hashSet.size()+"个");
        System.out.println("有没有animal3:"+hashSet.contains(animal3));
        System.out.println("遍历所有");
        for(Object obj:hashSet){
            Animal animal = (Animal) obj;
            System.out.println(animal.getName());
        }
        System.out.println("判断是否为空"+hashSet.isEmpty());

    }


}

存储顺序:

向HashSet 集合中存储元素时,会调用hashCode() 方法得到该对象的hashcode 值,根据该值决定该对象在HashSet中的位置。、

如果有两个元素通过equals() 方法比较返回的结果为true,但hashcode值不等,一样可以存储,并放到不同位置

 

遍历方法:

主要有三种:for循环遍历,使用增强型for循环遍历、使用Iterator 遍历

注意:

普通for() 循环通过get() 方法取出每个对象

Set 接口不能使用普通的for循环遍历,由于其不存在get() 方法,其他两种可以

List 接口三种都行

 

Iterator 接口:对集合进行迭代的迭代器,为集合而生

主要有两个方法:

hasNext()  判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true

next()         返回要返回的下一元素

凡是由Collection 接口派生而来的接口或类,都实现了iterate()方法,iterate()方法返回一个Iterator 对象

 

posted on 2020-03-11 23:58  obge  阅读(220)  评论(0编辑  收藏  举报