将新元素添加到固定数组中

时间:2012-05-26 07:37:05

标签: java arrays arraylist

我在互联网上搜索过,但仍然不明白,所以我在这里提出这个问题。

在下面的小程序中,我创建了两个巡视实例,我想要做的就是在没有改变“巡回演出[] =新巡演[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);
}
}

8 个答案:

答案 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)

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

  1. 使用ArrayList
  2. 创建数组的新instacne
  3. 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 );