Java 如何更改集合中的实例
我有以下集合,我想用字符串“10”替换任何10的倍数。谁能给我指一下正确的方向吗Java 如何更改集合中的实例,java,Java,我有以下集合,我想用字符串“10”替换任何10的倍数。谁能给我指一下正确的方向吗 Set<Integer> set3 = new HashSet<Integer>(); for(int i = 0; i<10; i++){ Random ran = new Random(); number = 1+ran.nextInt(1000); set3.add(number);
Set<Integer> set3 = new HashSet<Integer>();
for(int i = 0; i<10; i++){
Random ran = new Random();
number = 1+ran.nextInt(1000);
set3.add(number);
}
Set set3=new HashSet();
对于(inti=0;i你可以试试这个
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.stream.Stream;
public class ReplaceIntegers {
public static void main(String[] args) {
Set<Integer> set3 = new HashSet<>();
Set<Object> objectSet = new HashSet<>();
Random generator = new Random();
for(int i = 0; i < 1000; i++) {
set3.add(1+generator.nextInt(1000));
}
set3.stream()
.filter(n -> n%10 == 0)
.forEach(n -> objectSet.add(n.toString()));
objectSet.stream()
.forEach(v -> System.out.println(v));
for(Integer i : set3) {
if(i%10 == 0)
System.out.println(i + " is a multiple of 10");
else
System.out.println("Number: " + i);
}
}
}
import java.util.HashSet;
导入java.util.Random;
导入java.util.Set;
导入java.util.stream.stream;
公共类替换整数{
公共静态void main(字符串[]args){
Set set3=新的HashSet();
Set objectSet=new HashSet();
随机生成器=新随机();
对于(int i=0;i<1000;i++){
设置3.添加(1+生成器.nextInt(1000));
}
set3.stream()
.filter(n->n%10==0)
.forEach(n->objectSet.add(n.toString());
objectSet.stream()
.forEach(v->System.out.println(v));
for(整数i:set3){
如果(i%10==0)
System.out.println(i+“是10”的倍数);
其他的
系统输出打印项次(“编号:+i”);
}
}
}
PatrickSet set3=new HashSet();
Set<Integer> set3 = new HashSet<Integer>();
Set<Object> set4 = new HashSet<Object>();
for(Integer integer: set3){
if(integer%10==0){
set4.add(integer.toString());
} else {
set4.add(integer);
}
};
set3=set4;
Set set4=新的HashSet();
for(整数:set3){
如果(整数%10==0){
set4.add(integer.toString());
}否则{
set4.add(整数);
}
};
set3=set4;
如果无法将字符串
放入集合
,则应将类型的特异性降低到字符串
和整数
-对象
的最接近的公共父类。此外,我强烈反对使用“替换”(删除+添加)在集合
上进行迭代:这可能会导致数据一致性方面的潜在问题。只需在另一个集合
中复制元素,然后替换原始元素。输出将是整数和字符串的混合集合,因此您正在编写的方法签名将如下所示:
Set<Object> foo(Set<Integer> input);
在Java8中类似,但是您必须将集
转换为流
来进行映射,然后再次返回到集
static Set<Object> foo(Set<Integer> s) {
return s.stream()
.map(i -> i % 10 == 0 ? "10" : i)
.collect(Collectors.toSet());
}
Java 5-6解决方案几乎相同,只是没有菱形语法:
static Set<Object> foo(Set<Integer> s) {
Set<Object> result = new HashSet<Object>();
for (Integer i : s) {
result.add(i % 10 == 0 ? "10" : i);
}
return result;
}
你不能在集合中添加字符串
,这是一组整数
s,你不能在其中添加字符串
。你们完全正确,但我被要求创建一组整数,然后用它的字符串值替换任何10的倍数。也许要求是,你应该迭代集合如果一个数字是10的倍数,你应该打印出“10”?或者将10的倍数替换为10本身!这样您就可以使用模运算了!@user3648429查看我的编辑,我更新了代码,现在每%10个值都将添加到集合中,之后,项目集将被打印出来。@user3648429注意:您需要使用Java8,否则流API将不起作用。我遵循了您的逻辑,但我做的略有不同t、 集合不允许重复。假设不使用objectSet.add(n.toString())而是使用objectSet.add(“十”)让用户知道这些数字是十的倍数。你如何允许这种重复?
static Set<Object> foo(Set<Integer> s) {
Set<Object> result = new HashSet<>();
for (Integer i : s) {
result.add(i % 10 == 0 ? "10" : i);
}
return result;
}
static Set<Object> foo(Set<Integer> s) {
Set<Object> result = new HashSet<Object>();
for (Integer i : s) {
result.add(i % 10 == 0 ? "10" : i);
}
return result;
}
static Set foo(Set s) {
Set result = new HashSet();
Iterator it = s.iterator();
while (it.hasNext()) {
Integer i = (Integer) it.next();
Object o = i;
if (i.intValue() % 10 == 0) o = "10";
result.add(o);
}
return result;
}