萌新学Java之初入门径五

LinkedHashSet

  • LinkedHashSet 去重 无下标
  • Linked 有链表的结构 有序
  • 有序:怎么存的顺序 打印出来就什么顺序

    LinkedHashSet set = new LinkedHashSet<>();
    set.add(“a”);
    set.add(“b”);
    set.add(“c”);
    set.add(“d”);
    set.add(“e”);
    Iterator iterator = set.iterator();
    while (iterator.hasNext()) {
    String string = (String) iterator.next();
    System.out.println(string);
    }
    System.out.println(set);

例://利用set集合去除ArrayList集合中的重复元素(操作原ArrayList)
//ArrayList 保存a a, b b, c c, d d

    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("a");
    list.add("b");
    list.add("b");
    list.add("c");
    list.add("c");
    list.add("d");
    list.add("d");
    System.out.println(list);
    //创建set集合 去重
    HashSet<String> set = new HashSet<>();
    set.addAll(list);
    System.out.println(set);
    //先清空原集合
    list.clear();
    list.addAll(set);
    System.out.println(list);

TreeSet

无序 无下标 不重复

功能:排序

二叉树排序

存规则

  • 1.比我小的数 放左边(返回负数时的结果)
  • 2.比我打的数 放右边(返回正数时的结果)

取规则

  • 从小到大 升序 输出

    • 注意:只要compareTo 方法返回的是0 就不存

TreeSet排序步骤

  • 1.实现Comparable接口
  • 2.实现接口中方法
  • 3.编写 你的排序规则

例:
//创建TreeSet 保存 4个数字 查看打印结果

TreeSet set = new TreeSet<>();
set.add(12);
set.add(231213);
set.add(1421);
set.add(121);
System.out.println(set);

//TreeSet保存四个人 查看打印结果

TreeSet set = new TreeSet<>();
set.add(new Person(“gorilla1”,18));
set.add(new Person(“gorilla3”,20));
set.add(new Person(“gorilla4”,25));
set.add(new Person(“gorilla2”,19));
System.out.println(set);

//TreeSet保存四个字符串
//按字符串长度排序
//Comparator 比较器 接口
//编写比较规则
//将比较的规则直接传入到TreeSet的构造方法中

TreeSet set = new TreeSet<>(new CompareLength());
set.add(“asa”);
set.add(“asweqdsa”);
set.add(“adsasa”);
set.add(“aseqwea”);
System.out.println(set);

//重写比较规则
//自定义类 实现比较器接口
//泛型: 比较什么对象 就填写相应的对象类型

class CompareLength implements Comparator{
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
//比较字符串长度
int num = o1.length() - o2.length();
return num;
}
}


HashMap

双列集合

Map(双列集合的父接口)
* 1.以键值对形式来存储数据
* key-value 键值对
* 2.键值唯一(键值不能重复)

HashMap 和 HashSet 有什么关系?

  • 有关系 依赖关系
  • HashSet 依赖 HashMap
  • 实际上 向HashSet中添加元素
  • 相当于 向 Map的key列 添加元素
HashMap:去重的功能(该功能属于的 key列)
TreeMap:排序的功能(该功能属于的 key列)

例1:
//key 名字 v 年龄

    HashMap<String, Integer> map = new HashMap<>();
    //添加 键值对元素
    //put的返回值 是该键被覆盖的原来的value值
    >Integer v1 = map.put("wanglong1", 30);
    Integer v2 = map.put("wanglong2", 31);
    Integer v3 = map.put("wanglong3", 32);
    Integer v4 = map.put("wanglong4", 33);
    Integer v5 = map.put("wanglong4", 34);
    System.out.println(map);
    System.out.println(v1);
    System.out.println(v2);
    System.out.println(v3);
    System.out.println(v4);
    System.out.println(v5);

例2:
/**
* map 方法
* 包含 key
* 包含 value
* 获取所有key的Set集合
* 获取所有value集合
* 通过key删除整个键值对
* 清空map
*/

        HashMap<String, Integer> map = new HashMap<>();
    map.put("wanglong1", 12);
    map.put("wanglong2", 22);
    map.put("wanglong3", 32);
    map.put("wanglong4", 42);
    //判断map中是否包含 key
    boolean b1 = map.containsKey("wanglong2");
    System.out.println(b1);
    //是否包含value
    boolean b2 = map.containsValue(32);
    System.out.println(b2);

    //取出所有key的Set集合(核心方法)
    Set<String> keySet = map.keySet();
    System.out.println(keySet);
    //取出所有的Value集合
    Collection<Integer> values = map.values();
    System.out.println(values);

    //删除方法 通过key将整个键值对删除
    Integer remove = map.remove("wanglong3");//返回删除的键值对的value值
    System.out.println(map);
    System.out.println(remove);

    //清空map
    map.clear();
    System.out.println(map);

例3:
//利用Entry对象来遍历Map
//Entry对象中封装了一个键值对对象
//一个key 一个value

        HashMap<String, Integer> map = new HashMap<>(); 
    map.put("wanglong1", 33);
    map.put("wanglong2", 34);
    map.put("wanglong3", 35);
    //获取所有Entry对象的Set集合
    Set<Entry<String, Integer>> entrySet = map.entrySet();
    Iterator<Entry<String, Integer>> iterator = entrySet.iterator();
    while (iterator.hasNext()) {
        //取出集合中的每一个Entry对象
        Entry<String, Integer> entry = (Entry<String,Integer>) iterator.next();

        System.out.println(entry.getKey() + "  " + entry.getValue());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值