算法学习笔记:哈希表与JAVA String操作

版权申诉
0 下载量 94 浏览量 更新于2024-08-25 收藏 185KB PDF 举报
"这篇学习笔记主要涵盖了算法学习的基础知识,特别是关于哈希表(unordered_map)的使用以及Java中String类的相关操作。作者在2021年11月21日开始使用‘东哥的算法小抄’作为学习资料,并记录了读书笔记。笔记详细列举了哈希表和Java String类的一些关键方法和示例代码,旨在帮助读者理解和应用这些概念。" **哈希表(unordered_map)** 哈希表是一种高效的数据结构,它提供了快速的插入、删除和查找操作。在C++中,`unordered_map`是STL(标准模板库)的一部分,用于实现关联数组,即通过键来查找对应的值。 1. **size_type count(const key_type& key)** 这个方法用于检查给定的键`key`在哈希表中是否存在。如果存在,返回1;如果不存在,返回0。这提供了一种快速的方式判断键是否已被存储。 2. **size_type erase(const key_type& key)** 使用键`key`删除哈希表中的键值对。如果成功删除,返回1;如果键不存在,返回0。注意,`erase`操作会彻底移除键值对,而不仅仅是设置其值为0或空。 3. **常用代码示例** 示例代码展示了如何初始化一个`unordered_map`,并遍历其中的键值对。同时,指出使用方括号`[]`访问键值对时,如果键不存在,会自动创建键并为其分配默认值类型的值。 **Java String** 在Java中,`String`类是不可变的,这意味着一旦创建,就不能更改它的内容。因此,对于频繁的字符串操作,通常需要使用其他方法或类。 1. **toCharArray()** 这个方法将`String`对象转换为`char`数组,允许对单个字符进行操作。在操作完成后,可以通过构造函数将数组转换回`String`类型。 2. **StringBuilder** 当需要拼接多个字符串时,使用`StringBuilder`类比直接使用`+`操作符更有效率。`StringBuilder`提供了`append`方法,可以方便地添加各种类型的数据(如字符、字符串、数字等)到构建器中。 ```java StringBuilder sBuilder = new StringBuilder(); for (char c = 'a'; c <= 'f'; c++) { sBuilder.append(c); } sBuilder.append('g').append("hij").append(123); String reStr = sBuilder.toString(); // 将StringBuilder转换回String ``` 在这个示例中,`StringBuilder`被用于动态构建字符串,避免了多次创建新的`String`对象,从而提高了性能。 这篇笔记是学习算法和数据结构的一个良好起点,特别是对于理解和运用哈希表以及处理Java字符串操作的初学者来说。通过掌握这些基础知识,可以为解决更复杂的编程问题打下坚实基础。