i)Class Place(有3个字符串变量)ii)Class Coupon(有4个字符串变量 - 3个与Class Place相同,另外还有一个String Variable)。现在我有类Place的对象的ArrayList需要被复制到Class Coupon对象的ArrayList。因此,对象类优惠券的Arraylist的3个变量基本上与Class Place的对象的ArrayList相同,然后第四个变量将用另一个字符串初始化。我怎么能做到这一点。 而如何将反之亦然,如将类Coupon对象的ArrayList的3个变量复制到Class Place对象的ArrayList中。请帮助。
1. Class Place:
public class Place implements Serializable{
public String mPlace;
public String mOffer;
public String mImage;
public Place(String place, String offer, String image) {
this.mPlace = place;
this.mOffer = offer;
this.mImage = image;
}
}
2. Class Coupon:
public class Coupon implements Serializable {
public String mPlace;
public String mOffer;
public String mImage;
public String mItemClicked;
public Coupon(String place, String offer, String image, String ItemClicked) {
this.mPlace = place;
this.mOffer = offer;
this.mImage = image;
this.mItemClicked = ItemClicked;
}
}
3. I have now two variables List<Place>mPlaces and List<Coupon>mCoupons.
If one of variable has complete data then how I can copy it into another.
答案 0 :(得分:0)
您可以使用theese方法进行转换。
public static ArrayList<Coupon> toCoupons(ArrayList<Place> places){
ArrayList<Coupon> coupons = new ArrayList<>();
for (Place place: places) {
Coupon coupon = new Coupon;
coupon.mOffer = place.mOffer;
....
coupons.add(coupon);
}
return coupons;
}
public static ArrayList<Places> toPlaces(ArrayList<Coupons> coupons){
ArrayList<Coupon> places = new ArrayList<>();
for (Coupon coupon: coupons) {
Place place = new Place();
place.mOffer = coupon.mOffer;
....
places.add(place);
}
return places;
}
我强烈建议创建一个具有在这些类之间共享的字段的基类。其他类扩展了它。然后你可以使用多态。它将使您的世界更容易运行。
祝你好运。答案 1 :(得分:0)
由于Place.class
的{{1}}成员与Coupon.class
中的成员相同,您可以从Coupon.class
中删除这3个成员,只需Place.class
这样的成员:
public class Coupon extends Place implements Serializable {
public String mItemClicked;
public Coupon(String place, String offer, String image, String ItemClicked) {
this.mPlace = place;
this.mOffer = offer;
this.mImage = image;
this.mItemClicked = ItemClicked;
}
}
然后假设您有ArrayList<Coupon> list = new ArrayList<>();
,那么您可以轻松创建Place.class
列表,如:
ArrayList<Place> placeList = new ArrayList<>();
for(Coupon coupon : couponList) {
placeList.add(coupon);
}
所以你可以很容易地将优惠券课程安排到课堂上。
编辑:
您必须为所有Coupon
对象创建新的Place
对象,原因是当您创建Coupon
对象时,它具有Place
实例,因为它扩展了Place
所以您可以直接将Coupon
投射到Place
,但是您无法直接投射副Versa。因此,您需要为每个Coupon
对象创建新的Place
对象并设置该值。喜欢:
ArrayList<Coupon> couponList = new ArrayList<>();
for(Place place : placeList) {
Coupon coupon = new Coupon(place.mPlace, place.mOffer, place.mImage, null);
couponList.add(coupon);
}
注意:如果您拥有的ArrayList<Place>
是通过投射Coupon
对象创建的,那么您可以直接将Place
对象转换为Coupon
个对象所以在这种情况下,不需要为所有Coupon
对象创建新的Place
对象。