使用Hashtable对字符串进行碰撞
1.在一些字符串数组中,常会有重复的记录,比如手机号码,我们可以通过Hashtable来对其进行过滤
public String[] checkArray(String[] str)...{
Hashtable<String, String> hash=new Hashtable<String, String>();
for(int i=0;i<str.length;i++)...{
if(!hash.containsKey(str[i])) //测试指定对象是否为此哈希表中的键
hash.put(str[i], str[i]);
}
Enumeration enumeration=hash.keys(); //返回此哈希表中的键的枚举
String[] str_new=new String[hash.size()];
int i=0;
while(enumeration.hasMoreElements())...{
str_new[i]=enumeration.nextElement().toString();
i++;
}
return str_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.将一个字符串数组中某一个特定的字符串过滤掉
/** *//**检验一个字符串数组,若包含某一特定的字符串,则将该字符串从数组中删
除,返回剩余的字符串数组
* @param str_array 字符串数组
* @param str_remove 待删除的字符串
* @return 过滤后的字符串
*/
public String[] removeStrFromArray(String[] str_array,String
str_remove)...{
Hashtable<String, String> hash=new Hashtable<String, String>();
for(int i=0;i<str_array.length;i++)...{
if(!str_array[i].equals(str_remove))
hash.put(str_array[i], str_array[i]);
}
//生成一个新的数组
String[] str_new=new String[hash.size()];
int i=0;
Enumeration enumeration=hash.keys();
while(enumeration.hasMoreElements())...{
str_new[i]=enumeration.nextElement().toString();
i++;
}
return str_new;
}
分享到:
相关推荐
Hashtable的用法---马克-to-win Java视频哈希表的详细介绍
通常,这样的文件会包含一个类,其中定义了将JSON字符串和`Hashtable`之间进行转换的方法。例如: ```csharp public class JsonHelper { public static Hashtable JsonToHashtable(string jsonString) { // 使用...
此方法适用于处理包含大量字符的字符串,且对性能有一定要求,因为它只需要遍历字符串一次,时间复杂度为O(n),其中n是字符串的长度。 在实际应用中,可能还需要考虑其他因素,例如非字母字符的处理、大小写的敏感...
在编程中,字符串处理是一项基础且重要的任务,它涉及到对文本数据的各种操作,如比较、查找、替换、复制、移动、插入、删除、排序、连接以及统计等。以下是对这些操作的详细说明: 1. **查找**: - **比较字符串...
本篇文章将深入探讨如何在C#环境中,将JSON字符串转换为Hashtable, DataTable, 和DataSet对象,以及如何进行反转换。 首先,我们来看如何将JSON字符串转换成Hashtable。在.NET框架中,可以使用`JsonConvert....
- 将`HashTable`的键或值(根据需求)转换为字符串数组。 - 使用`ListBox.Items.AddRange()`方法将数组添加到`ListBox`。 示例代码: ```csharp // 创建Hashtable Hashtable items = new Hashtable(); items.Add...
Java基础面试涵盖了许多核心概念,包括字符串操作、方法重载与重写、字符串对象的比较、字符串类的变体以及final关键字的使用。下面将详细解释这些知识点。 1. **字符串方法**: - `split()`:根据指定的分隔符将...
使用`put()`方法向`Hashtable`中插入键值对: ```java table.put("Key1", 1); table.put("Key2", 2); ``` ### 3. 查找元素 使用`get()`方法根据键查找对应的值: ```java int value = table.get("Key1"); // ...
注意,键必须是不可变类型(如字符串或数值),并且在同一个Hashtable中必须是唯一的。尝试添加重复键会导致`ArgumentException`。 要访问或修改Hashtable中的值,可以使用ContainsKey、Item属性(或 indexer)以及...
为了有效地处理这些数据,我们可以创建一个通用的JSONParser类,将JSON字符串转换成Hashtable对象,方便后续操作。 首先,我们需要一个JSON库,这里使用的是org.json.me库,它是一个轻量级的JSON解析库,适用于J2ME...
- 键必须是不可变的,通常是字符串类型;值可以是任意类型。 - 若要避免类型转换,可以在添加值时使用强类型化的Hashtable,如Hashtable, String>。 除了遍历,还可以使用其他方法操作Hashtable,例如ContainsKey、...
- **添加元素**:使用`Add()`方法将键值对放入Hashtable。例如,`hashTable.Add("key", "value")`。 - **获取值**:使用索引器`[]`或`ContainsKey()`和`GetValue()`方法来获取键对应的值。例如,`string value = ...
- `hashtable_put`方法用于添加键值对,当键为字符串且设置忽略大小写时,会将键转换为大写。 - `hashtable_set`方法用于设置键值对,如果键已存在则会先移除旧的键值对。 - `hashtable_get`方法用于获取键对应的...
- 添加了一些键值对(这里键和值都是空字符串,实际应用中应该替换为实际的数据)。 - 提取了所有的键并存入 `ArrayList`。 - 对键列表进行了排序。 - 遍历排序后的键列表,并打印出对应的键值对。 2. **按值...
1. **使用`Hashtable`存储不重复元素**:通过遍历字符串数组,利用`Hashtable`的数据结构特性(键唯一)来确保每个元素只被添加一次。 2. **枚举操作**:使用`Hashtable`的`keys()`方法获取所有键值,再通过`...
使用字典树可以高效地处理字符串前缀查询,而使用Hashtable可能是因为需要存储额外的信息,例如字符串出现的次数,或者在解决问题时需要进行快速查找。 在给定的文件名列表中,有两个名为"Main1.java"和"Main.java...
例如,对于字符串键,可以使用DJB2哈希算法: ```c unsigned long hash(char *str) { unsigned long hash = 5381; int c; while (c = *str++) hash = ((hash ) + hash) + c; /* hash * 33 + c */ return ...
开源项目-spion-hashtable-latencies.zip,Improved latency in Go's next version (1.8) at spion/hashtable-latencies
需要注意的是,这里排序的标准是字符串的字典顺序,即按照每个字符的ASCII值进行排序。 ### 结论 通过以上介绍和示例代码,我们可以看到,在.NET Framework中,虽然哈希表默认并不支持排序,但通过一些技巧,如...