集合第三节

来源:互联网 发布:磁力解析app源码 编辑:程序博客网 时间:2024/05/18 00:35

Set集合的遍历:

Ø  方式一:通过迭代器进行遍历

例如:

Iterator it=set.iterator();

       //it.hasNext():判断迭代器中是否有下一个元素

       while (it.hasNext()) {

          //it.next();返回下一个元素

          Object obj=it.next();

          System.out.println(obj);

       }

说明:1.通过Set集合iterator()方法获得该集合的迭代器。

  2.根据迭代器的hasNext()方法判断集合中是否还有元素,如果有则返回true.

  3.根据迭代器的next()方法获取集合中的元素,默认获取到的是Object类型的。

Ø  方式二:增强版的for循环

   增强版的for循环适用于所有的集合(数组)遍历

语法:

for(数据类型 变量名:循环的集合/数组){

//循环体

}

例如:

for (Objectobj :set) {

          System.out.println(obj);

       }

TreeSet:排序后的set集合,不可重复,不能存放null数据

使用方式和HashSet类似,但是要注意,使用HashSet存放对象,该对象的类必须实现Comparable接口,该接口中的compareTo(Objecto)方法中定义排序规则。如果不实现该接口程序报错。

例如:将存放的学生按照年龄排序

package gaoji2;

 

publicclass StudentimplementsComparable{

    private intid;

    private Stringname;

    private intage;

    public int getId() {

       returnid;

    }

    public void setId(intid) {

       this.id = id;

    }

    public String getName() {

       returnname;

    }

    public void setName(Stringname) {

       this.name = name;

    }

    public int getAge() {

       returnage;

    }

    public void setAge(intage) {

       this.age = age;

    }

    public Student(intid, Stringname,intage) {

       super();

       this.id = id;

       this.name = name;

       this.age = age;

    }

    @Override

    public String toString() {

       return"Student [id=" +id +", name=" +name +", age=" +age +"]";

    }

   

    @Override

    public boolean equals(Objectobj) {

       System.out.println("equals被执行了");

       //1.判断obj是否为空

       if(obj==null){

          return false;

       }

       //2.判断是否属于同一类型

       if(!(objinstanceof Student)){

          return false;

       }

       //3.判断内容是否一样

       Student stu=(Student)obj;

        if(stu.getAge()==age&&stu.getName().equals(name)&&stu.getId()==id){

          return true;

       }

      

       return false;

    }

 

    @Override

    public int hashCode() {

       System.out.println("hashCode被执行了");

       // TODO Auto-generated method stub

       returnname.hashCode()+age+id;

    }

    @Override

    public intcompareTo(Object o) {

       //定义比较规则:根据对象的age进行升序排列

       //判断后返回1 -1 0

       /**1:大于

        * -1:小于

        * 0:等于

        *

        */

      

       //1.判断o是否为空

       if(o==null){

           return 0;

       }

       if(oinstanceof Student){

           Student stu=(Student) o;

           if(stu.getAge()>age){

             return 1;

           }elseif(stu.getAge()<age){

             return -1;

           }else{

             return 0;

           }

       }

       return 0;

    }

}

 

使用:

Set set=newTreeSet();

    /*set.add("5");

   set.add("2");

   set.add("8");

   set.add("3");

   set.add("6");

   set.add("4");*/

    set.add(new Student(1, "zhangsan1", 16));

    set.add(new Student(8, "zhangsan8", 20));

    set.add(new Student(2, "zhangsan2", 32));

    set.add(new Student(6, "zhangsan6", 19));

    set.add(new Student(4, "zhangsan4", 18));

    for (Objecto :set) {

       System.out.println(o);

    }

执行结果


Map

Map集合用来保存具有映射关系的数据,即以键值对(key-value)的方式来存储数据。因此在Map集合的内部有两个集合,一个集合用于保存Map中的key(),一个集合来保存Map中的value(值),其中keyvalue可以是任意的数据类型。

存储方式如下:

Map集合

从上图可以看出,每一个keyMap集合中对应唯一的value值,他们是一一对应的关系。

  Map中常用的方法:

返回类型

方法名称

作用

Object

put(Object key,Object value)

添加元素,返回于此有关的value

void

clear()

清空集合中的数据

boolean

containsKey(Object key)

根据key从集合中判断key是否存在

boolean

containsValue(Object value)

根据value从集合中判断value是否存在

Object

getObject key

根据key获取对应的value

Set

keySet()

返回Map集合的key的集合

int

size()

返回集合中元素的数量

Object

removeObject key

删除集合中key对应的元素

  HashMap:

特点: 1.key可以为空(null,value可以为空(null)

         2.HashMap中的键是根据HashSet进行存储的,

             3.所以说HashMap中的数据是无序的,键不可重复的。

      4.非线程安全的,效率高。

实例:

//创建HashMap集合

       Map map=newHashMap();

       map.put(1,"aa");//map集合中添加了一条数据,key=1 value=aa

       //在添加元素的时候如果key相等的时候,会覆盖前面的值。

       map.put(2,"cc");

       map.put(3,"zhangsan");

       map.put("a",null);

       //map.put(o);

       System.out.println(map.size());//获取集合的长度(集合中的元素数)

       System.out.println(map.get("a"));//根据map中指定的key去获取相应的值

注意:当两个相同键的对象进行保存的时候,后面添加的映射关系会覆盖前面的映射关系。


原创粉丝点击