Java 是否可以将object从object重新键入integer

Java 是否可以将object从object重新键入integer,java,parsing,object,arraylist,Java,Parsing,Object,Arraylist,我面临将对象重新键入整数的问题 我有两个字符串属性的对象车。第一个属性是ID。 我将ID从字符串重新键入为整数 ArrayList<Car> intList = new ArrayList<Car>(); // already filled with objects ArrayList<Integer> intList = new ArrayList<Integer>(); for(Car tempInt : items){ intLi

我面临将对象重新键入整数的问题

我有两个字符串属性的对象车。第一个属性是ID。 我将ID从字符串重新键入为整数

ArrayList<Car> intList = new ArrayList<Car>(); // already filled with objects 

ArrayList<Integer> intList = new ArrayList<Integer>();

for(Car tempInt : items){   
intList.add(Integer.parseInt(tempInt.getID()));
}
Collections.sort(intList); // i sorted id's
这可能吗?我需要对对象进行排序。 谢谢
我认为你基本上误解了这个场景中的对象是什么。当您创建
ArrayList
时,您不会神奇地保留有关这些整数连接到哪些汽车的任何信息

我想你要做的是按id对你的
汽车列表进行排序,对吗?在这种情况下,您需要的是一个
比较器

下面是使用
比较器进行排序的示例:

ArrayList<Car> cars = ...//Filled with cars
Comparator<Car> carSorter = new Comparator<Car>() {
  @Override
  public int compare(Car a, Car b) {
    return a.getID() - b.getID();
  }
};
Collections.sort(cars, carSorter);//After this line, cars will be in order
ArrayList cars=…//装满了汽车
比较器车辆分拣机=新比较器(){
@凌驾
公共int比较(a车、b车){
返回a.getID()-b.getID();
}
};
收集。分拣(汽车、汽车分拣机)//排完这条线后,汽车就可以正常行驶了

我认为您基本上误解了此场景中的对象。当您创建
ArrayList
时,您不会神奇地保留有关这些整数连接到哪些汽车的任何信息

我想你要做的是按id对你的
汽车列表进行排序,对吗?在这种情况下,您需要的是一个
比较器

下面是使用
比较器进行排序的示例:

ArrayList<Car> cars = ...//Filled with cars
Comparator<Car> carSorter = new Comparator<Car>() {
  @Override
  public int compare(Car a, Car b) {
    return a.getID() - b.getID();
  }
};
Collections.sort(cars, carSorter);//After this line, cars will be in order
ArrayList cars=…//装满了汽车
比较器车辆分拣机=新比较器(){
@凌驾
公共int比较(a车、b车){
返回a.getID()-b.getID();
}
};
收集。分拣(汽车、汽车分拣机)//排完这条线后,汽车就可以正常行驶了

我根本不会这样做。如果您改为允许汽车相互比较(通过将id存储为
整数
),则
汽车
可以自行排序。如下所示:

public class Car implements Comparable<Car> {
    private String id;
    private String otherString;
    private Integer intId; // this is new

    public Car(String arg0, String arg1) {
        // Add this line to constructor
        intId = Integer.parseInt(id);
    }

    @Override
    public int compareTo(Car arg0) {
        return intId.compareTo(arg0.intId);
    }
}

我根本不会这样做。如果您允许汽车相互比较(通过将id存储为
整数
),则
汽车
可以自行排序。按如下方式操作:

public class Car implements Comparable<Car> {
    private String id;
    private String otherString;
    private Integer intId; // this is new

    public Car(String arg0, String arg1) {
        // Add this line to constructor
        intId = Integer.parseInt(id);
    }

    @Override
    public int compareTo(Car arg0) {
        return intId.compareTo(arg0.intId);
    }
}

没有“重新键入”对象的事情,至少在Java中没有,因为它使用强类型。您可以将数字字符串解析为int或其他数字,但这样做需要一个很好的理由。而且,大多数情况下,将id号视为“数字”不是一个好主意因为它们不象数字一样——你从不加、减或乘。为什么不把它们当作字符串呢?下一步:你想用这些代码实现什么?可能有更好的方法,比如使用
Map
或类似的方法,这一切都取决于你的需要。我逐行读取文件中的值将值添加到数组中。然后将数组值传递给构造函数并将对象添加到arraylist中。我需要做的是根据ID对数组列表进行排序并将其写回文件。没有“重新键入”这样的事情对象,至少不是Java中的对象,因为它使用强类型。您可以将数字字符串解析为int或其他数字,但这样做需要一个很好的理由。而且,大多数情况下,将id数字视为“数字”不是一个好主意因为它们不象数字一样——你从不加、减或乘。为什么不把它们当作字符串呢?下一步:你想用这些代码实现什么?可能有更好的方法,比如使用
Map
或类似的方法,这一切都取决于你的需要。我逐行读取文件中的值将值添加到数组中。然后将数组值传递给构造函数并将对象添加到arraylist中。我需要做的是根据ID对数组列表进行排序并将其写回文件。