1.在一些字符串数组中,常会有重复的记录,比如手机号码,我们可以通过Hashtable来对其进行过滤
publicString[]checkArray(String[]str)...{
Hashtable<String,String>hash=newHashtable<String,String>();
for(inti=0;i<str.length;i++)...{
if(!hash.containsKey(str[i]))
hash.put(str[i],str[i]);
}
Enumerationenumeration=hash.keys();
String[]str_new=newString[hash.size()];
inti=0;
while(enumeration.hasMoreElements())...{
str_new[i]=enumeration.nextElement().toString();
i++;
}
returnstr_new;
}
示例:
String[] mobile={"13811071500","13811071500","13811071501","13811071503","13811071501"};
mobile=checkArray(mobile);
for(int i=0;i<mobile.length;i++)
System.out.println(mobile[i]);
输出结果为:
13811071503
13811071501
13811071500
2.A,B均为字符串数组,找出在A中存在,而在B中不存在的字符串
public String[] compareArray(String[] A,String[] B){
Hashtable<String, String> hash=new Hashtable<String, String>();
Hashtable<String, String> hash_new=new Hashtable<String, String>();
for(int i=0;i<B.length;i++)
hash.put(B[i], B[i]);
for(int i=0;i<A.length;i++){
if(!hash.containsKey(A[i]))
hash_new.put(A[i], A[i]);
}
String[] C=new String[hash_new.size()];
int i=0;
Enumeration enumeration=hash_new.keys();
while(enumeration.hasMoreElements()){
C[i]=enumeration.nextElement().toString();
i++;
}
return C;
}
示例:
String[] mobile1={"13811071500","13811071501","13811071502","13811071503","13811071504"};
String[] mobile2={"13811071500","13811071505","13811071502","13811071506","13811071504"};
String[] mobile3=compareArray(mobile1,mobile2);
for(int i=0;i<mobile3.length;i++)
System.out.println(mobile[i]);
输出结果:
13811071503
13811071501
存在的问题:
每次都是倒序,可以再对程序稍加改动,变成正序。
3.将一个字符串数组中某一个特定的字符串过滤掉
/***//**检验一个字符串数组,若包含某一特定的字符串,则将该字符串从数组中删
除,返回剩余的字符串数组
*@paramstr_array字符串数组
*@paramstr_remove待删除的字符串
*@return过滤后的字符串
*/
publicString[]removeStrFromArray(String[]str_array,String
str_remove)...{
Hashtable<String,String>hash=newHashtable<String,String>();
for(inti=0;i<str_array.length;i++)...{
if(!str_array[i].equals(str_remove))
hash.put(str_array[i],str_array[i]);
}
//生成一个新的数组
String[]str_new=newString[hash.size()];
inti=0;
Enumerationenumeration=hash.keys();
while(enumeration.hasMoreElements())...{
str_new[i]=enumeration.nextElement().toString();
i++;
}
returnstr_new;
}
分享到:
相关推荐
- 添加了一些键值对(这里键和值都是空字符串,实际应用中应该替换为实际的数据)。 - 提取了所有的键并存入 `ArrayList`。 - 对键列表进行了排序。 - 遍历排序后的键列表,并打印出对应的键值对。 2. **按值...
在给定的代码示例中,`someNames`数组中的字符串被插入到HashTable中。首先调用`buildChains`来准备链表,然后遍历`someNames`,用`put`方法将每个名字与其本身作为数据对插入到散列表中。最后,可以使用`...
通用型哈希表`HashTableT`可能是为适应多种类型键值对存储而设计的,可能支持不同类型的键和值,如字符串、整数、自定义对象等。 哈希表的工作原理基于以下几个核心概念: 1. **哈希函数**:哈希函数是将键映射到...
- String:不可变对象,一旦创建就不能修改,适合在不需要修改字符串的情况下使用,因为其内部优化,多次拼接会创建多个中间对象,可能导致内存浪费。 - StringBuffer:线程安全,提供了append等方法用于动态构建...
- 全局字符串常量池:JVM维护的字符串引用表,使用Hashtable实现,存储字符串实例的引用。 - 基本类型包装类对象常量池:Byte、Short等基本类型包装类实现了常量池技术,用于优化内存使用。 理解这些基础概念对于...
- 遍历字符串中的每个字符,进行一系列运算以更新种子值。 - 使用 `cryptTable` 数组来进一步混淆哈希值,增加算法的复杂度。 最终返回 `seed1` 的值作为字符串的哈希值。 ##### 2. 哈希表位置获取 ```c int ...
实现一个方法`compress(String text)`,该方法接受一个字符串作为输入,并返回一个新的字符串,其中连续重复的字符被替换为该字符加上其出现次数。例如,对于字符串"text = "aabbbcddd"`,函数应返回"2a3bc3d"。这...
这里使用了一个简单的线性组合方法来计算字符串的Hash值,并通过模运算将其映射到数组的索引范围内。 #### 五、Hash算法的安全性与应用 在信息安全领域,Hash算法也有着重要的应用。安全Hash算法主要用于保护数据...
8. `String str="i"`创建了一个字符串常量,`new String("i")`创建了一个新的字符串对象。 9. 可以通过`str.reverse()`来反转字符串。 10. `String`类的常用方法包括`length()`、`substring()`、`indexOf()`、`...
哈希函数是哈希表的核心组成部分之一,其主要功能是将输入(通常是字符串或其他类型的数据)转换成一个固定大小的数值,这个数值通常被称为哈希值或散列值。理想情况下,好的哈希函数应当能够均匀地分布不同的键值,...
9. 可以使用`StringBuilder`或`StringBuffer`的`reverse()`方法反转字符串。 10. `String`类的常用方法包括`length()`、`substring()`、`indexOf()`、`contains()`等。 11. 抽象类不一定有抽象方法,但含有抽象...
- **当使用双引号定义字符串时,该字符串会被存储在常量池中。** #### 二十一、字符串最大长度 - **理论上,字符串的最大长度受到JVM可用内存的限制。** #### 二十二、Object常用方法 - **toString():** 返回...
例如,在一个包含特定顺序的字符串序列中,Coalesced hashing会利用线性探测找到空位并插入数据,同时将这个空位链接到之前的键值对上,形成一种特殊的链表结构。 #### 四、总结 本文介绍了搜索引擎技术中数据结构...
- Collections.sort方法是基于Collections.sort()实现,使用TimSort算法对List进行排序。 2.12 hash算法 - Hash算法可以将任意长度的数据映射为固定长度的哈希值。 2.13 迭代器Iterator和Enumeration - Iterator和...
- 设计哈希函数时,需要考虑键的特性,如字符串、整数等。简单的哈希函数可能使用键的模运算,但可能导致高碰撞率。更复杂的哈希函数如DJB2或MD5可以提供更好的分布,但实现复杂度较高。 - 在这个C语言实现中,...
6. **StringBuffer类**:字符串的动态构建。 7. **Float类**:浮点数操作。 8. **Double类**:双精度浮点数操作。 9. **Long类**:长整型数值操作。 10. **基本类的重要说明**:解释这些类在J2ME环境中的特殊用法和...
例如,对于字符串,可以使用字符的ASCII码累加并取模来简单实现。 - **冲突解决策略(Collision Resolution)**:如链表或者其他数据结构来处理哈希冲突。 - **哈希表类(Hash Table Class)**:包含哈希表的大小、...
- **StringBuilder**:非线程安全的可变字符串,效率高于StringBuffer。 **11. ArrayList和LinkedList的区别** - **ArrayList**:基于数组实现,随机访问快,插入删除慢。 - **LinkedList**:基于链表实现,随机...
9. **字符串反转**:使用`new StringBuilder(str).reverse().toString()`或`new StringBuffer(str).reverse().toString()`。 10. **String常用方法**:length()、charAt()、substring()、indexOf()、concat()、...
9. 使用`str.reverse()`可以反转字符串。 10. `String`类的常用方法包括`length()`, `substring()`, `indexOf()`, `concat()`, `replace()`, `trim()`等。 11. 抽象类不一定需要抽象方法,但至少有一个抽象方法的类...