0

我在网上搜索过,但还是不明白,所以我在这里问这个问题。

在下面的小程序中,我创建了两个游览实例,我要做的就是在不更改“Tour tour[]=new Tour[2];”的情况下放入 tour[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);
}
}
4

8 回答 8

1

正如您所发现的,数组确实是固定长度的,因此我肯定会推荐一个ArrayList. 像这样使用它...

ArrayList<Tour> tours = new ArrayList<Tour>();
tours.add(new Tour("AB001","TOUR1",100));
tours.add(new Tour("AB002","TOUR2",200));

每次您想添加新的游览时,只需tours.add()再次调用即可。

于 2012-05-26T07:41:25.770 回答
1

当您在 java 中创建这样的数组时,Tour tour[] = new Tour[2]意味着您只能向其中添加 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);
于 2012-05-26T07:41:58.677 回答
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);
于 2012-05-26T07:40:33.553 回答
0

你不能用数组来做,因为它们的长度是固定的。
您的问题几乎已经显示了替代方案:

  1. 使用ArrayList
  2. 创建数组的新实例

ArrayList 实际上是 java 中动态数组的实现,这很可能是您真正想要的。

使用默认构造函数对其进行实例化,并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)

于 2012-05-26T07:40:56.953 回答
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 在数据集大小未知的情况下非常有用。

于 2012-05-26T07:41:33.320 回答
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 ) ;

于 2012-05-26T07:41:47.453 回答
0

他们对 ArrayList 是正确的;像这样使用它:

List<Tour> tours = new ArrayList<Tour>();
tours.add(new Tour("AB001","TOUR1",100));
tours.add(new Tour("AB002","TOUR2",200));

你需要导入 java.util.*

于 2012-05-26T07:42:36.057 回答
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
For 您需要以下代码:

Tour [] toursArray = new Tour[ tourList.size() ];
tourList.toArray( toursArray );
于 2012-05-26T07:46:24.443 回答