一些收获和基础的java

本文探讨了如何利用TreeMap的特性进行有序遍历,并强调了在迭代过程中处理01-1等值的重要性。讲解了Java集合的接口与实现类分离,以及ArrayList的底层原理。同时,讨论了`a==b`与`a.equals(b)`的区别,并涉及了Java比较对象的方法应用。

对于一些思路简单的题,输入输出的改进是必要的。

TreeMap 是一种数据结构,它的key都是经过排序的
当获取keySet的时候会以顺序的形式返回遍历结果。其中字符串和整数的key已经给我们排好序。

在写新的迭代比较器的时候要注意0 1 -1 这三个值都要返回来。因为当相等的时候也要有返回的比较。

补充知识

java集合的特点,实现了接口和实现类的相分离。
有序表的接口是list,具体的实现类有ArrayList LinkedList
二是可以支持泛型,可以限制集合中只能放入一种元素。
如:List list=new ArrayList<>();

ArrayList

ArrayList的底层实现仍然是以数组的形式存储数据的。
当增加一个元素而原来的数组满了的时候就要将数组复制到一个新的数组,新的数组倍增。

ArrayList 允许插入空值。
ArrayList

遍历对象可以用遍历器

 public class Main {
    public static void main(String[] args) {
    	List<String>list = List.of("a","b","c");
    	for(Iterator<String>it=list.Iterator();){
    		String s=it.next();
    		System.out.print(s);
    	}
    }

将list转化为array.

Integer []array = List.toArray(new Integer[list.size()];


一些知识点:

java中比较两个对象 a==b和a.equals(b)有什么不同?
前者是进行对象地址的比较,看是否指向堆中的同一地址。而后者是进行a,b包含的内容进行比较,除了String Integer之外,需要重写比较方法。

学习Java语言的基础通常涉及以下几个关键点: 1. **语法理解**:熟悉Java的关键字、数据类型(如基本类型、引用类型)、变量声明、运算符、控制结构(if-else、for循环、while循环等)。 2. **类对象**:了解类的概念,知道如何定义、继承、封装属性行为,以及创建对象调用方法。 3. **封装**:理解封装是将数据操作数据的方法捆绑在一起,保护内部状态不受外部直接访问。 4. **继承**:理解如何通过继承重用已有代码,实现抽象模块化。 5. **接口**:掌握接口与抽象类的区别,以及何时选择使用接口。 6. **异常处理**:知道如何使用try-catch-finally语句来处理程序运行时可能出现的错误或异常情况。 7. **集合框架**:熟悉ArrayList, LinkedList, HashMap等常见数据结构及其操作方法。 8. **文件I/O**:学会读写文件的基本操作,包括流式API路径处理。 9. **多线程**:理解并发线程概念,如何使用synchronized关键字同步共享资源。 10. **泛型**:理解参数化的类型,提高代码的类型安全性。 当你深入学习后,进行实践项目有助于巩固理论知识,同时也能提升解决问题的能力。你可以尝试编写简单的应用,比如文本处理工具、小型游戏或者数据库操作示例。 收获思考: - **理论与实践结合**:理解理论的同时要动手实践,才能真正掌握。 - **持续学习**:Java新版本不断更新,保持对最新特性库的关注。 - **调试能力**:熟练使用IDE的调试工具,能帮助快速定位修复问题。 - **设计模式**:理解并能运用常见的设计模式,使代码更易维护扩展。 - **性能优化**:意识到性能优化的重要性,学会利用JVM的特性优化代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值