set和map

#map与set
先看map

import java.util.Collection;
import java.util.HashMap;
import java.util.Set;

public class Map {
    public static void main(String[] args){
         HashMap<String,String>map=new HashMap<String,String>();   //这里用的的map里的HashMap,定义了一个新对象
         map.put("book","3");     //put方法新增元素
         System.out.println(map); 
         map.put("book1","2");
         System.out.println(map);
         System.out.println(map.containsKey("book2"));   //使用containsKey判断键是是否有book2这个元素
         System.out.println(map.containsValue("d123"));   //这里是判断在值上是否有d123这个值
         System.out.println(map.isEmpty());       //判断这个对象是否为空
         System.out.println(map.size());          //输出这个对象的元素个数
         Set<String> set=map.keySet();        //输出这个对象的键的集合
         for(String s :set)          //使用加强for循环遍历
         {
              System.out.println(s);
         }
         Collection<String> value=map.values();  //输出这个对象值的集合
                 for(String y:value)
                 {
                      System.out.println(y);
                 }

    }
}

输出结果为:

{book=3}
{book1=2, book=3}
false
false
false
2
book1
book
2
3

##Map

  1. 使用了put,contains之类的方法来实现具体操作。
  2. Map集合的一个元素由两个数据组成,即键和值,在定义键和值时要注意定义的是基本数据类型的封装类,也就是说键和值都是对象,而不是一个数据类型。
  3. Map有HashMap,TreeMap等子类,HashMap会对元素进行查重,如果键重复那么后面添加的值会覆盖原来的值,而TreeMap则是对有自然排序的键进行排序。
  4. HashMap的底层是一个数组,我们存放实际是存放在数组中。
    ###再看Set
  import java.util.*;
import java.util.HashSet;
import java.util.TreeSet;
class Student  {          //这里定义了一个类储存元素
    private int age;
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge(){
        return  age;
    }
    public int setAge(int age){
        return age;
    }
    Student(){}
    Student(int age,String name){
        this.age=age;
        this.name=name;
    }
}
public class set {
    public static void main(String[] ages){
        HashSet<Student> set=new HashSet<Student>();    //将Student类作为元素new一个新对象
        set.add(new Student(4,"王奕钦"));            //为set对象中新增元素
        set.add(new Student(3,"林清玄"));
        set.add(new Student(5,"林黛玉"));
        set.add(new Student(5,"王奕钦"));
        for(Student student:set)     //然后用加强for循环
           System.out.println("姓名是: "+student.getName()+" 年龄是"+student.getAge());
        HashSet<String> set0=new HashSet<String>();    //HashSet来new一个String的新对象
        set0.add("1");        //新增元素
        set0.add("2");
        set0.add("4");
        set0.add("1");
        set0.contains("9");       //contains方法判断是否有相同元素
        for(String s:set0)
            System.out.println(s);
        TreeSet<Integer> set1=new TreeSet<Integer>();     //用TreeSet创建一个新对象
        set1.add(4);
        set1.add(6);
        set1.add(2);
        set1.add(1);
        for(Integer E:set1)
            System.out.println(E);
    }
}

结果是

姓名是: 林清玄 年龄是3
姓名是: 林黛玉 年龄是5
姓名是: 王奕钦 年龄是5
姓名是: 王奕钦 年龄是4
1
2
4
1
2
4
6  

##set:
.只有每个元素只有一个数据,但是可以创建用创建类的方法来包含多个元素,但是再用HashSet的话,就不能进行查重了,因为String类中本来就包含equals和hashCode方法,需要在Student类中重写这两个方法才可以查重。
.set的话可以用add,clear等方法来进行基本的数据增删改。
.Set中也有HashSet和TreeSet等子类,用来具体实现,可以进行查重,排序等操作。
##最后
还涉及到了加强for循环,它的形式是

 for(String s:set0)    //String是封装类,s代表set0里面的的每一个元素,set0则表示具体的对象  

加强for循环只适用于对象底层是迭代器的情况,不然无法使用。
不过加强for循环操作更为简单,也更为方便,能使用它的话会更便于我们操作。
t0) //String是封装类,s代表set0里面的的每一个元素,set0则表示具体的对象

加强for循环只适用于对象底层是迭代器的情况,不然无法使用。  
不过加强for循环操作更为简单,也更为方便,能使用它的话会更便于我们操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值