首页 > 编程语言 >大数据学习记录,Java基础(6)

大数据学习记录,Java基础(6)

时间:2025-01-17 11:59:14浏览次数:3  
标签:Java 记录 System 学习 put add map1 println out

集合

Java集合框架体系

  • Java 集合可分为 Collection 和 Map 两种体系:
    • Collection接口:单列数据,定义了存取一组对象的方法的集合
      • List:元素有序、可重复的集合
      • Set:元素无序、不可重复的集合
    • Map接口:双列数据,保存具有映射关系“key-value对”的集合

Collection接口的方法

  • add:添加元素对象到当前集合中
  • addAll:添加一个集合中的所有元素对象到当前集合中
  • boolean isEmpty():判断当前集合是否为空集合。
  • int size():获取当前集合中实际存储的元素个数

Iterator接口

Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力。如果需要创建 Iterator 对象,则必须有一个被迭代的集合。

 public void test02(){
        Collection name = new ArrayList();
        name.add("小王");
        name.add("小芳");
        name.add("小红");

        Iterator iterator = name.iterator();//获取迭代器对象
        while(iterator.hasNext()) {//判断是否还有元素可迭代
            System.out.println(iterator.next());//取出下一个元素
        }
    }

List【接口】

List: 元素有序【存储和取出的顺序一致】,允许元素发生重复,具有索引的概念

public static void main(String[] args) {
    //借助ArrayList实现子类创建List接口的对象
    List list1 = new ArrayList();
    //在list中添加元素
    list1.add("hello");
    list1.add("world");
    list1.add("apple");
    list1.add("hadoop");
    list1.add("redis");
    list1.add("world");
    
    //迭代器遍历
    Iterator iterator = list1.iterator();
    while (iterator.hasNext()){
    System.out.println(iterator.next());
}
}

List集合具有索引的概念,根据索引提供了List集合特有的一些功能:

//在索引三的位置上添加一个元素
list1.add(3,"数加");

//根据索引删除元素并返回被删除的元素
System.out.println(list1.remove(10));

//通过索引获取元素
System.out.println(list1.get(3));

//根据索引修改值并返回索引位置上的旧值
System.out.println(list1.set(3, "shujia"));

//
List的实现类
  • ArrayList:底层数据结构是数组,查询快,增删慢
  • LinkedList:底层数据结构是双链表,查询慢,增删快

Set【接口】

Set: 元素唯一且无序

HashSet

HashSet的底层数据结构是哈希表,保证了元素的唯一性

 public static void main(String[] args) {
     // HashSet() 构造一个新的空集合; 背景HashMap实例具有默认初始容量(16)和负载因子(0.75)。
     HashSet<String> set1 = new HashSet<>();
     // 因为Set是Collection的子接口,HashSet是Set接口的实现类,里面必然也重写了父接口中所有的抽象方法
     set1.add("hello");
     set1.add("world");
     set1.add("hello");
     set1.add("java");
     set1.add("hello");
     set1.add("hadoop");
     for (String s : set1) {
         System.out.println(s);//world java hello hadoop
     }
 }
TreeSet

TreeSet的底层数据结构是红黑树,可排序

排序方式:
1) 自然排序

自然排序要求元素类要实现Comparable接口,并重写compareTo方法,compareTo方法中的结果返回值,取决于需求来编写代码逻辑

​ 2) 比较器排序

TreeSet排序:

 public static void main(String[] args) {
     // 使用TreeSet集合存储字符串元素对象并遍历
     //TreeSet() 构造一个新的,空的树组,根据其元素的自然排序进行排序
     TreeSet<String> set1 = new TreeSet<>();
     /*
         TreeSet中的add方法底层实际上是调用了TreeMap中的put方法
      */
     set1.add("banana");
     set1.add("peach");
     set1.add("apple");
     set1.add("watermelon");
     set1.add("banana");
     set1.add("apple");
     set1.add("cherry");
     System.out.println(set1);
     //[apple, banana, cherry, peach, watermelon]
 }

Map【接口】

HashMap

概述:
  • 存储数据采用的哈希表结构,允许使用null键和null值,与HashSet一样,元素的存取顺序不能保证一致。
  • 所有的key构成的集合是Set:无序的、不可重复的。所以,key所在的类要重写:equals()和hashCode()
  • 所有的value构成的集合是Collection:无序的、可以重复的。所以,value所在的类要重写:equals()
  • 一个key-value构成一个entry
  • 所有的entry构成的集合是Set:无序的、不可重复的
public static void main(String[] args) {
    //借助Map子类HashMap来创建对象
    Map<Integer, String> map1 = new HashMap<>();
    //String put(Integer key,String value) // 返回被覆盖的旧值
    map1.put(1001, "张三");
    map1.put(1002, "李四");
    map1.put(1001, "王五");
    map1.put(1003, "赵六");
    map1.put(1004, "王二麻");
    map1.put(1005, "王林");
    System.out.println("map1: " + map1);
    //map1: {1001=王五, 1002=李四, 1003=赵六, 1004=王二麻, 1005=王林}
    
    System.out.println("-----------------");
    // V get(Object key) 根据键获取值
    System.out.println(map1.get(1005));//王林
    System.out.println("map1: " + map1);
    //map1: {1001=王五, 1002=李四, 1003=赵六, 1004=王二麻, 1005=王林}
    
    System.out.println("-----------------");
    // Set<K> keySet() 将所有的键拿出来放到一个Set集合中
    Set<Integer> keys = map1.keySet();
    for (Integer key : keys) {
        System.out.println(key);//
    }
    //1001 1002 1003 1004 1005
    System.out.println("-----------------");
    
    // Collection<V> values() 将所有的值拿出来放到一个Collection集合中
    Collection<String> values = map1.values();
    for (String value : values) {
        System.out.println(value);//
    }
    //王五 李四 赵六 王二麻 王林
    System.out.println("------------------");
    // Set<Map.Entry<K,V>> entrySet()  将每个键值对拿出来放入到Set集合中
    // map集合遍历方式1:一次获取所有的键值对,依次遍历得到每个键值对的键和值
    Set<Map.Entry<Integer, String>> entries = map1.entrySet();
    for (Map.Entry<Integer, String> entry : entries) {
        // entry -  键值对
        Integer key = entry.getKey();
        String value = entry.getValue();
        System.out.println(key + "-" + value);
    }
    //1001-王五 1002-李四 1003-赵六 1004-王二麻 1005-王林
    System.out.println("------------------");
    // map集合遍历方式2:先获取所有的键,遍历键,根据键得到对应的值
    for (Integer key : keys) {
        // 根据键获取值
        String value = map1.get(key);
        System.out.println(key + "-" + value);
    }
    //1001-王五 1002-李四 1003-赵六 1004-王二麻 1005-王林
    System.out.println("------------------");
}

LinkedHashMap

LinkedHashMap是HashMap的子类:底层数据结构是哈希表【唯一性】和双链表【有序】

public static void main(String[] args) {
    LinkedHashMap<Student3, String> map1 = new LinkedHashMap<>();
    map1.put(new Student3("张三", 18), "打游戏");
    map1.put(new Student3("李四", 16), "看动漫");
    map1.put(new Student3("王五", 18), "看电影");
    map1.put(new Student3("赵六", 17), "看书");
    map1.put(new Student3("钱七", 14), "看美女");
    Set<Map.Entry<Student3, String>> entries = map1.entrySet();
    for (Map.Entry<Student3, String> entry : entries) {
        Student3 key = entry.getKey();
        String value = entry.getValue();
        System.out.println(key + "-" + value);
    }
    /*Student3{name='张三', age=18}-打游戏
      Student3{name='李四', age=16}-看动漫
      Student3{name='王五', age=18}-看电影
      Student3{name='赵六', age=17}-看书
      Student3{name='钱七', age=14}-看美女
    */
}

TreeMap

TreeMap中的自然排序和比较器排序都是针对键来说的,可以保证所有的 Key-Value 对处于有序状态。

public static void main(String[] args) {
    TreeMap<String, String> map1 = new TreeMap<>();
    map1.put("banana", "3");
    map1.put("apple", "4");
    map1.put("peach", "6");
    map1.put("apple", "3");
    map1.put("cherry", "19");
    Set<Map.Entry<String, String>> entries = map1.entrySet();
    for (Map.Entry<String, String> entry : entries) {
        String key = entry.getKey();
        String value = entry.getValue();
        System.out.println(key + "-" + value);
    }
    /*
    apple-3
    banana-3
    cherry-19
	peach-6
    */
}

标签:Java,记录,System,学习,put,add,map1,println,out
From: https://blog.csdn.net/qqeqraw/article/details/145181557

相关文章

  • 基于JAVA中的spring框架和jsp实现大学生综合测评系统项目【内附项目源码+论文说明】
    摘要大学生综合测评系统是一款以大学生德智体等综合成绩进行评测的系统, 其开发基于B/S模式的网上评测的实现,采用的是JSP+sqlserver数据库为主要模式。在线评测平台是凌架于互联网系统上的一个评测平台,是地面评测系统的一种延伸和互补,也是实现无纸化评测的主要工具。当下在......
  • Java中String类常用的各种方法
    Java中String类常见的方法以下介绍字符串常见的几个方法。介绍String类在Java中,String类是一个代表字符串的类,具有以下特性:不可变性:String对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对String对象的修改操作实际上会创建一个新的String对象。......
  • 原根学习笔记+BSGS复习笔记
    学原根发现拔山盖世算法忘光了,干脆一块儿写了吧。\(BSGS\)算法\(BSGS\)算法,又名拔山盖世算法、北上广深算法。他解决的问题如下:求解最小的可行的\(k\),满足\(a^k\equivb(\bmodp)\),其中保证\(\gcd(a,p)=1\)。容易想到暴力枚举,时间复杂度\(O(p)\),但是巨劣,考虑优化。......
  • Java百万数据导出Excel性能优化[读(并发)写分离/流式查询]
    参考:https://www.zhihu.com/tardis/bd/art/533753443?source_id=1001 Java百万数据导出Excel性能优化[读(并发)写分离/流式查询]结果测试:104万数据,导出excel用时由59秒优化到19秒问题列表:1、导出过程中会较多占用CPU、内存、磁盘,需全局对Excel导出限流,防止同时对大量数......
  • 【人工智能学习之聚类分析算法DBSCAN】
    【人工智能学习之聚类分析算法DBSCAN】什么是DBSCAN详细介绍对比DBSCAN和K-Means聚类算法的优缺点DBSCAN的实际应用DBSCAN调用方法具体代码示例:人群密度测算修改参数什么是DBSCANDBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise),即基于密度的......
  • JAVA开源免费项目 基于Vue和SpringBoot的城镇保障性住房管理系统(附源码)
    本文项目编号T122,文末自助获取源码\color{red}{T122,文末自助获取源码}......
  • JAVA开源免费项目 基于Vue和SpringBoot的多维分类的知识管理系统(附源码)
    本文项目编号T121,文末自助获取源码\color{red}{T121,文末自助获取源码}......
  • Java基于SpringBoot+Vue的常见病中医食疗平台设计与实现
    所需该项目可以在最下面查看联系方式,为防止迷路可以收藏文章,以防后期找不到项目介绍Java基于SpringBoot+Vue的常见病中医食疗平台设计与实现系统实现截图技术栈介绍JDK版本:jdk1.8+编程语言:java框架支持:springboot数据库:mysql版本不限数据库工具:Navicat/......
  • Java基于SpringBoot+Vue的百草园化妆服务平台系统 微信小程序
    所需该项目可以在最下面查看联系方式,为防止迷路可以收藏文章,以防后期找不到项目介绍Java基于SpringBoot+Vue的百草园化妆服务平台系统的设计和实现系统实现截图技术栈介绍JDK版本:jdk1.8+编程语言:java框架支持:springboot数据库:mysql版本不限数据库工具......
  • Java初学者笔记-01、封装继承多态
    封装:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。通过封装,可以将类的信息隐藏在类内部,只暴露对外的接口(如setter和getter方法),从而提高代码的安全性和可维护性。继承:继承是从已有的类中派生出新的类的过程。新的类(子类)能够吸收已有类(父类)的数据属性和行为,并且可以......