我在互联网上搜索过,但仍然不明白,所以我在这里提出这个问题。
在下面的小程序中,我创建了两个巡视实例,我想要做的就是在没有改变“巡回演出[] =新巡演[2];”的情况下进行巡回演出[2]。
很多人推荐使用ArrayList,但我不知道如何在这段代码中做到这一点。
class Test{
public static void main(String args[]){
class Tour{
private String tourId;
private String tourDescription;
private double tourFee;
private int numOfBooking;
public Tour(String tourId,String tourDescription,double tourFee){
this.tourId=tourId;
this.tourDescription=tourDescription;
this.tourFee=tourFee;
}
public void print(){
System.out.println("ID:"+this.tourId);
System.out.println("Desc:"+this.tourDescription);
System.out.println("Fee:"+this.tourFee);
}
}
Tour tour[]=new Tour[2];
tour[0]=new Tour("AB001","TOUR1",100);
tour[1]=new Tour("AB002","TOUR2",200);
}
}
答案 0 :(得分:1)
正如您所发现的,数组确实是固定长度的,因此我肯定会推荐ArrayList
。像这样使用它......
ArrayList<Tour> tours = new ArrayList<Tour>();
tours.add(new Tour("AB001","TOUR1",100));
tours.add(new Tour("AB002","TOUR2",200));
每次要添加新游览时,只需再次致电tours.add()
。
答案 1 :(得分:1)
在像Tour tour[] = new Tour[2]
这样的java中创建数组时,这意味着您只能添加2个元素。
要使用ArrayList实现此目的,您需要:
在导入语句中添加
import java.util.ArrayList
然后用这个
替换你的数组代码ArrayList<Tour> tour = new ArrayList<Tour>();
tour.add(new Tour("AB001", "TOUR1", 100);
tour.add(new Tour("AB002", "TOUR2", 200);
tour.add(new Tour("AB003", "TOUR3", 300);
答案 2 :(得分:0)
如果您正在尝试添加游览[2],那么您的阵列需要三个元素,对吧?
否则:
List<Tour> tour = new ArrayList<Tour>();
tour.add(new Tour("AB001", "TOUR1", 100);
tour.add(new Tour("AB002", "TOUR2", 200);
tour.add(new Tour("AB003", "TOUR3", 300);
答案 3 :(得分:0)
你不能用数组来做,因为它们的长度是固定的。 你的问题几乎已经显示了替代方案:
ArrayList实际上是java中dynamic array的实现,这很可能是你真正想要的。
使用默认构造函数对其进行实例化,并使用ArrayList.add(index,element)
添加元素以在特定位置添加元素,或使用ArrayList.add(element)
添加元素。
代码快照:
List<Tour> tours = new ArrayList<Tour>();
tours.add(new Tour("AB001","TOUR1",100));
tours.add(new Tour("AB001","TOUR1",100));
您可以使用ArrayList.add(element)
答案 4 :(得分:0)
由于您的阵列场景不可能,以下是如何使用数组列表执行相同的过程:
ArrayList<Tour> tours = new ArrayList<Tour>();
tours.add(new Tour("AB001","TOUR1",100));
tours.add(new Tour("AB002","TOUR2",200));
tours.add(/*another tour, and so forth*/);
// to convert to a Tour[], use the following:
Tour[] tourArray = tours.toArray(new Tour[tours.size()]);
ArrayList在数据集大小未知的情况下非常有用。
答案 5 :(得分:0)
使用数组列表很简单, 你有这个代码:
Tour tour[]=new Tour[2];
tour[0]=new Tour("AB001","TOUR1",100);
tour[1]=new Tour("AB002","TOUR2",200);
替换为:
ArrayList<Tour> tours = new ArrayList<Tour>();
tours.add(new Tour("AB001","TOUR1",100));
tours.add(new Tour("AB002","TOUR2",200));
获取元素arrayList,只需使用 tour.get(index);
答案 6 :(得分:0)
他们对ArrayList是正确的;像这样使用它:
List<Tour> tours = new ArrayList<Tour>();
tours.add(new Tour("AB001","TOUR1",100));
tours.add(new Tour("AB002","TOUR2",200));
您需要导入java.util。*
答案 7 :(得分:0)
除非分配新的,否则这是不可能的。因为原始数组不可扩展 或者,您可以使用集合动态地将新对象添加到列表中 示例如下所示:
List<Tour> tourList = new ArrayList<Tour>( 10 );
tourList.add( 0, new Tour( "AB001", "TOUR1", 100 ) ); // add at first
tourList.add( 1, new Tour( "AB002", "TOUR2", 200 ) ); // add next to first
这样,您可以在列表的任何位置添加任意数量的Tour
个实例
您可能希望将tourList
转换回Tour
的原始数组
为此,您需要以下代码:
Tour [] toursArray = new Tour[ tourList.size() ];
tourList.toArray( toursArray );