编写一个方法removeDuplicates,接收一个字符串并返回去重后的字符串,保持原有字符顺序。为该方法编写单元测试。 示例输入:"banana”示例输出:"ban" 要求:完成代码的编写并按照要求使用Java 语言对应的单元测试框架 JUnit编写测试代 码
时间: 2024-09-23 11:15:01 浏览: 45
在Java中,我们可以使用HashSet数据结构来去除字符串中的重复字符,因为它不允许有重复元素,并且能够保持插入元素的顺序(因为HashSet内部是基于哈希表实现的)。这里是一个`removeDuplicates`方法的实现以及对应的JUnit单元测试:
```java
import java.util.HashSet;
public class StringUtils {
/**
* Remove duplicates from a string while preserving the original order.
*
* @param input The input string to remove duplicates from
* @return A new string with unique characters in their original order
*/
public static String removeDuplicates(String input) {
HashSet<Character> set = new HashSet<>();
StringBuilder result = new StringBuilder();
for (char c : input.toCharArray()) {
if (!set.contains(c)) {
set.add(c);
result.append(c);
}
}
return result.toString();
}
}
// Now let's write a test using JUnit framework
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class StringUtilsTest {
@Test
void testRemoveDuplicates() {
// Test case 1
assertEquals("ban", StringUtils.removeDuplicates("banana"));
// Test case 2
assertEquals("abc", StringUtils.removeDuplicates("abccba"));
// Test case 3 (edge case)
assertEquals("", StringUtils.removeDuplicates(""));
// Test case 4 (special character)
assertEquals("a@b#c", StringUtils.removeDuplicates("a@b@c@b"));
// Test case 5 (whitespaces)
assertEquals("abc", StringUtils.removeDuplicates("a b c"));
}
}
```
在这个例子中,`testRemoveDuplicates`方法包含了几个不同的测试场景,包括正常情况、特殊字符、空字符串和包含空格的字符串。这样可以确保`removeDuplicates`方法对于各种输入都能正确工作。
阅读全文