ArrayList集合

<1>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ArrayList集合
{

    class Program
    {
        static void Main(string[] args)
        {
            //数组:长度不可变。类型单一。而集合的好处就是:长度可以改变,任何类型的数据都可以放入集合中。

            ArrayList list = new ArrayList(); //创建一个集合对象。

            list.Add(2);           
            list.Add(3.14);
            list.Add(true);

            list.Add(new int[] { 1, 2, 3, 4 });//将一个int[]数组放入list集合

            User u=new User() { Name="周晶",Age=25};
            list.Add(u); //将一个对象放入list集合中
         
            
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.ReadKey();
        }

    }
    public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

}

以上代码输出结果:


既然想打印出list中的素组元素。那就的做一个判断吧。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ArrayList集合
{

    class Program
    {
        static void Main(string[] args)
        {
            //数组:长度不可变。类型单一。而集合的好处就是:长度可以改变,任何类型的数据都可以放入集合中。

            ArrayList list = new ArrayList(); //创建一个集合对象。

            list.Add(2);           
            list.Add(3.14);
            list.Add(true);

            list.Add(new int[] { 1, 2, 3, 4 });//将一个int[]数组放入list集合

            User u=new User() { Name="周晶",Age=25};
            list.Add(u); //将一个对象放入list集合中
         
            
            for (int i = 0; i < list.Count; i++)
            {
                //那么如果要将Add(new int[] { 1, 2, 3, 4 })中的元素打印出来怎么办?
                if (list[i] is int[])
                {
                    for (int j = 0; j < ((int[])list[i]).Length; j++)
                    {
                        Console.WriteLine(((int[])list[i])[j]);
                    }
                }
                else if (list[i] is User)
                {
                    Console.WriteLine(u.Name);
                    Console.WriteLine(u.Age);
                }
                else
                {
                    Console.WriteLine(list[i]);
                }
            }

            Console.ReadKey();
        }
    }
    public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}
以上代码如下:



可是以上代码这样写就太麻烦了。每次打印一下list里面的数组(集合)元素就要做这么一个判断多麻烦。所以AddRange()方法就出现了。专门为list中添加数组(集合)元素而专设。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ArrayList集合
{
    class Program
    {
        static void Main(string[] args)
        {
            //数组:长度不可变。类型单一。而集合的好处就是:长度可以改变,任何类型的数据都可以放入集合中。

            ArrayList list = new ArrayList(); //创建一个集合对象。集合:很多数据的集合

            //Add(object value); AddRange(ICollection c);根据里氏转换定律:如果一个地方需要父类的对象,那么我也可以将他的子类对象给它。因为Object是任何类的父类。所以Add()里可以放入任何类型的数据。而ICollection是一个集合接口,所以可以将一个集合(数组)对象给它。

            list.Add(2);           
            list.Add(3.14);
            list.Add(true);//将一个bool类型的放入list集合中

            list.Add(new int[] { 1, 2, 3, 4 });//将一个int[]数组放入list集合中
            list.AddRange(new int[] { 5, 6, 7, 8 });//将一个int[]数组放入list集合中

            list.Add(new User() { Name="周晶",Age=25}); //将一个对象放入list集合中
         

            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);

            }
            Console.ReadKey();
        }

    }
    public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

}


以上代码输出内容



===============================================================================================


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ArrayList集合
{
    class Program
    {
        static void Main(string[] args)
        {
            //数组:长度不可变。类型单一。而集合的好处就是:长度可以改变,任何类型的数据都可以放入集合中。

            ArrayList list = new ArrayList(); //创建一个集合对象。集合:很多数据的集合

            //----------------------Add()添加

            //Add(object value); AddRange(ICollection c);根据里氏转换定律:如果一个地方需要父类的对象,那么我也可以将他的子类对象给它。因为Object是任何类的父类。所以Add()里可以放入任何类型的数据。而ICollection是一个集合接口,所以可以将一个集合(数组)对象给它。

            list.Add(2);
            list.Add(3.14);
            list.Add(true);//将一个bool类型的放入list集合中

            list.Add(new int[] { 1, 2, 3, 4 });//将一个int[]数组放入list集合中
            list.AddRange(new int[] { 5, 6, 7, 8 });//将一个int[]数组放入list集合中

            list.Add(new User() { Name = "周晶", Age = 25 }); //将一个对象放入list集合中


            //----------------------Clear() 清空所有元素

            list.Clear();

            //----------------------Remove() 移除

            list.Remove(true); //删除指定元素。这里是:将list集合中 “true”这个元素删除
            list.RemoveAt(2);//删除指定索引处的元素。这里是:删除索引下标为2的那个元素
            list.RemoveRange(0, 2);//删除一定范围内的元素。这里是:从索引下标为0的元素开始删,总共删除2个元素。

            //----------------------Insert() 插入

            list.Insert(1, "张三");//将一个单一元素插入到list中;这里是:将"张三"这个元素插入到list这个集合中,插入的位置是索引下标为1处
            list.InsertRange(0, new string[] { "大哥", "二哥", "小弟" }); //将一个集合插入到list中;这里是:将一个集合插入到list这个集合中。插入的位置是索引下标为0处。


            //----------------------Contains() 包含

            bool b = list.Contains(2); //检查"2"这个元素是否包含在list集合中。

            //----------------------Reverse() 反转

            list.Reverse();//将list中元素的顺序反转(注:不是降序排序)


            //----------------------Sort() 排序
            list.Sort(); //对list这个集合进行升序排序 //注意不要乱用哦,因为list是一个集合,不是一个单一的数组。遇到字符串就不知道怎么排序了。就会报错的哦。

           

            
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);

            }
            Console.ReadKey();
        }

    }
    public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

}



### 关于Java `ArrayList`集合的使用方法、特性及示例 #### 方法概述 对于向`ArrayList`中添加元素的操作,可以通过调用`add()`方法来完成。此操作支持两种形式:一种是在列表末尾追加单个元素;另一种是指定位置插入元素[^1]。 ```java // 创建一个新的ArrayList实例 ArrayList<String> lists = new ArrayList<>(); lists.add("java"); // 向列表末尾添加字符串 "java" lists.add(0, "C"); // 将字符串 "C" 插入到索引为0的位置 lists.add(1, "python"); // 将字符串 "python" 插入到索引为1的位置 System.out.println(lists); ``` 除了上述提到的`add()`方法外,还有用于替换已有元素的方法——`set(int index,E element)`。该方法接收两个参数:目标位置以及新的值,并返回被覆盖掉的老值[^2]。 ```java import java.util.ArrayList; public class Main { public static void main(String[] args){ ArrayList<String> list = new ArrayList<>(); list.add("old"); String oldValue = list.set(0,"new"); // 替换第一个位置上的元素 System.out.println(oldValue); // 输出:"old" System.out.println(list.get(0)); // 输出:"new" } } ``` 另外一个重要功能是由`addAll(Collection<? extends E> c)`所提供的批量增加能力。这使得开发者能够一次性将另一个集合中的全部成员加入当前`ArrayList`之中[^3]。 ```java ArrayList<Integer> originalList = new ArrayList<>(Arrays.asList(1, 2)); ArrayList<Integer> additionalElements = new ArrayList<>(Arrays.asList(3, 4)); originalList.addAll(additionalElements); for(Integer num : originalList) { System.out.print(num + " "); } // 打印结果应为:“1 2 3 4 ” ``` #### 特性描述 - **动态大小**:与固定尺寸的传统数组相比,`ArrayList`具备灵活调整容量的能力,在必要时自动增长内部结构以容纳更多项。 - **存储类型**:尽管不能直接保存原始数据类型(如int),但是通过对应的封装器类(例如Integer)间接实现这一点成为可能。此外也适用于用户自定义的对象实例。 - **索引访问效率高**:由于底层采用连续内存布局,因此依据特定下标获取或修改项目非常迅速,平均情况下只需常数级别的时间开销O(1)[^4]。 - **维护插入顺序**:每当有新条目进来都会按照实际发生的先后次序排列,不会打乱原有的序列关系。 - **允许多重出现相同的数据点**:即同一个实体可以在不同的地方多次存在而不会引发异常情况发生。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值