Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改集合中的实例_Java - Fatal编程技术网

Java 如何更改集合中的实例

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);

我有以下集合,我想用字符串“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 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”);
}
}
}
Patrick

Set 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的倍数。也许要求是,你应该迭代
集合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;
}