String str;调用set方法循环添加数据,且数据累计不会覆盖
时间: 2024-02-23 09:00:40 浏览: 47
您可以使用StringBuilder类来完成这个任务。StringBuilder类是Java中的一个可变字符串类,可以动态地添加和修改字符串内容。您可以在循环中使用StringBuilder的append()方法来将新数据追加到已有数据的末尾,而不会覆盖之前的数据。最后,您可以通过调用StringBuilder的toString()方法来获取最终的字符串值。
以下是一个示例代码片段:
```
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) {
// 假设您有一个名为data的数组存储了您要添加的数据
sb.append(data[i]);
}
String str = sb.toString();
```
在上面的代码中,我们首先创建了一个StringBuilder对象。然后,我们使用for循环遍历数据数组,并在每次迭代中使用append()方法将数据添加到StringBuilder对象的末尾。最后,我们调用toString()方法将StringBuilder对象转换为最终的字符串值,并将其赋值给str变量。这样,您就可以累加数据而不会覆盖之前的数据了。
相关问题
优化上面的方法 public static String replaceWithStar(Set<String> strings, String input) { for (String str : strings) { input = input.replace(str, "***"); } return input; }
可以使用 StringBuilder 来优化这个方法,因为字符串是不可变的,每次调用 replace 方法都会创建一个新的字符串对象,而 StringBuilder 可以在原有的字符串基础上进行修改,避免了创建新对象的开销。以下是优化后的代码:
public static String replaceWithStar(Set<String> strings, String input) {
StringBuilder sb = new StringBuilder(input);
for (String str : strings) {
int index = sb.indexOf(str);
while (index != -1) {
sb.replace(index, index + str.length(), "***");
index = sb.indexOf(str, index + 3);
}
}
return sb.toString();
}
解释这段代码class MyCollection<E> { Object[ ] objs = new Object[5]; public E get (int index) { return (E) objs [index]; } public void set (E e, int index) { objs[index] = e; } } public class TestGenerics { public static void main(String[] args) { MyCollection<String> mc = new MyCollection<String>(); mc.set("aaa", 0); mc.set("bbb", 1); String str = mc.get(1); System.out.println(str); } }
这段代码定义了一个泛型类MyCollection,它可以存储任意类型的对象。该类中有一个Object类型的数组objs,用于存储存储数据。这个类有两个方法,分别是get和set,用于获取和设置数组中的元素。这两个方法都使用泛型类型E,以便在调用时指定具体的数据类型。
在main方法中,创建了一个MyCollection对象mc,并使用set方法向数组中添加两个字符串"aaa"和"bbb"。然后使用get方法获取数组中下标为1的元素,即"bbb"。最后将这个字符串打印输出。
这个程序演示了Java中的泛型编程,通过泛型可以在编译时检查数据类型的安全性,提高程序的可读性和可维护性。
阅读全文