J2EE基础之map集合框架

首先我们来知道一下今天的主要几个小知识点

一、map集合框架特点是什么?

Map是一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中不能有重复的键(Key),每个键(key)都有一个对应的值(value)。

一个键(key)和它对应的值构成map集合中的一个元素。

Map中的元素是两个对象,一个对象作为键,一个对象作为值。键不可以重复,但是值可以重复。

Map存储元素使用put方法,而Collection使用add方法

Map集合没有直接取出元素的方法,而是先转成Set集合。

案例
Map<String,Integer> map=new HashMap<>();
//        V put(K key,V value);
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        System.out.println(map);
    //  移除
        Object remove = map.remove("b");
        System.out.println(remove);
        System.out.println(map);
        //修改 也是调用put方法
        map.put("c", 32);
        System.out.println(map);
        
        //查询
        System.out.println(map.get("c"));

二、字符串出现的字符


 ①、实现思路:
         1、做字符串切割、得到一个字符数组
          2、接下来遍历、拿到单个字符
          3、如果该字符没有出现过、即value值为null、那么该字符为KEY、值初始化为1
          4、如果已经出现过、拿到原来的值+1
          
         ②、 debugger的使用、调式代码
          1、打断点
          2、采用debug的方式运行程序
          3、进入调式窗口、左上方有一个step、over调式箭头、快捷键F6
          4、接下来可以用个F6一步步调式当前程序对应的每一个变量
char[] arr = s.toCharArray();
        Map<Character, Integer> map = new HashMap<>();
        for (char c : arr) {
            Integer value = map.get(c);
            if(value == null) {
                map.put(c, 1);
            }
            else {
                map.put(c, value+1);
            }
//            System.out.println(value);
        }
//        map.entrySet().stream().sorted((x,y)->x.getValue()-y.getValue()).forEach(System.out::print);
        Set<Entry<Character,Integer>> entrySet = map.entrySet();
        for (Entry<Character, Integer> entry : entrySet) {
            System.out.println(entry.getKey() + ":" +entry.getValue());
        }
    }
 

三、泛型

泛型
 之前:不健壮 的代码、会在运行时才会把错误暴露出来
 之后:将潜在的问题暴露出来、早预防早治疗
    将运行期出现的异常转换为编译器的错误

public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);
        set.add(4);
        set.add(5);
        for (Object obj : set) {
            if(Integer.valueOf(obj.toString())%2==0) {
                System.out.println(obj);
            }
//            set.remove(obj);
        }
    }
}
class BookDao{
//    add(BooK book);
//    del(BooK book);
//    edit(BooK book);
//    list(BooK book);
}
class UserDao extends BaseDao{
}
class BaseDao<T>{
    void add(T t){
        
    }
    void ael(T t){
        
    }
    void edit(T t){
        
    }
    List<T> list(T t){
        return null;
    }
    
}
class result{
    <T>void del(T t) {
        
    }
 

四,框架类工具包

①、集合之间的相互转换:
 1、数组转成集合,本质上依然是一个数组、长度是不可变的
  2、集合与数组所具备方法是不一样的、入对于数组而言、就没有判断内部包含哪个元素

代码展示:

public static void main(String[] args) {
        String [] arr= {"a","b","c","d"};
        List<String> list = Arrays.asList(arr);
//        Object[] array = list.toArray();
//        list.add("e");
//        java.lang.UnsupportedOperationException
        System.out.println(list.size());
        
    }

②、 对于工具类其他方法的应用
  sort
 toString

代码展示:

public static void main(String[] args) {
//        List<String> list = new ArrayList<>();
//        list.add("b");
//        list.add("c");
//        list.add("a");
//        System.out.println(list);
//        Collections.sort(list);
//        System.out.println(list);
//        //这里面x、y值得是集合中的元素
//        Collections.sort(list,(x,y) -> y.compareTo(x));
//        System.out.println(list);
        
        List<Person> list = new ArrayList<>();
        list.add(new Person("b",16));
        list.add(new Person("c",18));
        list.add(new Person("b",19));
        System.out.println(list);
//        Collections.sort(list);
        Collections.sort(list,(x,y) -> x.getName().compareTo(y.getName()));
        System.out.println(list);
        
        Integer[] arr = {3,6,9,2,5,8};
        Arrays.sort(arr,(x,y) -> y- x);
        System.out.println(Arrays.toString(arr));
    }
}
class Person /*implements Comparable<Person>*/{
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
//    @Override
//    public int compareTo(Person o) {
//        // TODO Auto-generated method stub
//        return o.getName().compareTo(this.name);
//    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值