有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从int数组创建对象数组

显然,我不明白什么。我有一个int的基本数组,我需要将其转换为我自己类型的数组。这是我试过的

public class StupidInt {
   @JsonProperty("ID")
   private int id;

   public StupidInt(int id) { this.id = id; }

   public int getId() { return this.id; }
}

public static void main(String []args){
   int[] ints = {1,2,4,67};
   StupidInt[] myInts = IntStream.of(ints).map(StupidInt::new).collect(Collectors.toList());
}

正如您所料,myInts行有一个问题,这个问题是“无法将StupDint转换为int”。但我不确定使用map或foreach或任何中间和终端方法的组合来将int数组转换为我的对象数组。进行此转换的正确方法是什么


共 (2) 个答案

  1. # 1 楼答案

    您需要使用mapToObj来创建一个新的对象流,并使用toArray而不是collect来获得作为数组的结果

    StupidInt[] myInts = IntStream.of(ints).mapToObj(StupidInt::new).toArray(StupidInt[]::new);
    
  2. # 2 楼答案

    @hev1给出的答案很简单,对于你想要实现的目标来说,这是一个终端方法的最佳答案

    如果您需要不同的解决方案,我在这里提供两种不同的选择。第一种方法只是一种中间方法,用于创建基元数组;第二个选项是解决问题的一种有益的不同方法,它不创建基元数组,而是创建一个反映基元类型的类型对象的“列表”,也可以用于任何类型或对象:

    解决方案1:

    int[] ints = {1,2,4,67};
    StupidInt[] myInts = new StupidInt[ints.length];
    for (int i = 0; i < myInts.length; i++) {
        myInts[i] = new StupidInt(ints[i]);
    }
    

    解决方案2:

    public class StupidIntList {
    
        private ArrayList<Integer> ids;
    
        public StupidIntList() { 
            this.ids = new ArrayList<Integer>();
        }
    
        public void add(int id) {
            this.ids.add(id);
        }
    
        public int get(int pos) { 
            return this.ids.get(pos); 
        }
    
        public boolean findId(int i_d) {
            for (Integer id : ids) {
                if(id == i_d)
                    return true;
            }
            return false;
        }
    
        public String toString() {
            String res = "[";
            for (Integer id : ids) {
                res += id+",";
            }
            return res.substring(0, res.lastIndexOf(","))+"]";
        }
    
        public static void main(String []args){
            int[] ints = {1,2,4,67};
            StupidIntList myInts = new StupidIntList();
            for (int i = 0; i < ints.length; i++) {
                myInts.add(ints[i]);
            }
            System.out.println(myInts);
        }
    }
    

    在这种情况下,要添加一个新的int,可以使用add方法,要获得一个int,可以使用get(position)方法或find方法来查看它是否存在并获得位置

    或者你可以简单地使用ArrayList类,或者如果你愿意的话,我可以和你分享一个列表结构,它允许你完成你需要完成的事情,有你能想到的大多数方法,实现可比的,可以排序的,实现可比的,非常有效的