下面要给大家介绍的就是Java List集合方面的知识,主要讲到的是ArrayList类用法详的内容,下面就一起来了解一下吧,有具体的代码示例哦。
List是一个有序、可重复的集合,集合当中,每个元素都有其对应的顺序索引,List集合允许使用重复元素,能够通过索引来访问指定位置的集合元素,List集合默认按元素的添加顺序设置元素的索引,第一个添加到 List 集合中的元素的索引为0,第二个为1,以此类推。
List实现了Collection接口,它主要有两个常用的实现类:ArrayList类和LinkedList类。
下面详细的讲一下ArrayList类。
ArrayList类
ArrayList类实现了可变数组的大小,存储在内的数据称为元素,它还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好,使用ArrayList创建的集合,允许对集合中的元素进行快速的随机访问,但是,向ArrayList当中插入和删除元素的速度会比较的慢。
ArrayList类的常用构造方法的重载形式:
ArrayList()---构造一个初始容量为10的空列表;
ArrayList(Collectionc)---构造一个包含指定Collection元素的列表,这些元素是按照该Collection的迭代器返回它们的顺序排列的;
ArrayList类除了包含Collection接口中的所有方法之外,还包括List接口中提供的如下所示的方法。
ArrayList类的常用方法:
这里的话要注意了,在调用List的set(int index, Object element)方法来改变List集合指定索引处的元素的时候,指定的索引一定要是List集合的有效索引,例,集合长度为4,就不可以指定替换索引为4处的元素,也就是说这个方法不会改变List集合的长度。
示例:
使用ArrayList类向集合中添加三个商品信息,包括商品编号、名称和价格,之后,遍历集合输出这些商品信息。
创建一个商品类Product,在这个类中定义3个属性和toString()方法,分别实现setter/getter方法。
代码实现:
public class Product { // 商品类 private int id; // 商品编号 private String name; // 名称 private float price; // 价格 public Product(int id, String name, float price) { this.name = name; this.id = id; this.price = price; } // 这里是上面3个属性的setter/getter方法,这里省略 public String toString() { return "商品编号:" + id + ",名称:" + name + ",价格:" + price; } }
创建一个测试类,调用Product类的构造函数实例化三个对象,将Product对象保存至ArrayList集合中,最后遍历该集合,输出商品信息。
测试类的代码实现:
public class Test { public static void main(String[] args) { Product pd1 = new Product(4, "木糖醇", 10); Product pd2 = new Product(5, "洗发水", 12); Product pd3 = new Product(3, "热水壶", 49); List list = new ArrayList(); // 创建集合 list.add(pd1); list.add(pd2); list.add(pd3); System.out.println("*************** 商品信息 ***************"); for (int i = 0; i < list.size(); i++) { // 循环遍历集合,输出集合元素 Product product = (Product) list.get(i); System.out.println(product); } } }
这个示例当中的ArrayList集合中存放的是自定义类Product的对象,这和存储的String类的对象是相同的,和Set不同的是,List集合中存在get()方法,这个方法能够通过索引来获取所对应的值,获取的值为Object类,所以要将这个值转换成Product 类,从而获取商品信息。
程序运行结果:
*************** 商品信息 *************** 商品编号:4,名称:木糖醇,价格:10.0 商品编号:5,名称:洗发水,价格:12.0 商品编号:3,名称:热水壶,价格:49.0
示例:
在使用List集合的时候,要注意区分indexOf()方法和lastIndexOf()方法,前者是获得指定对象的最小索引位置,后者是获得指定对象的最大索引位置,前提条件是指定的对象在List集合中有重复的对象,否则这两个方法获取的索引值相同。
下面的代码演示了indexOf()方法和lastIndexOf()方法的区别:
public static void main(String[] args) { List list = new ArrayList(); list.add("One"); list.add("|"); list.add("Two"); list.add("|"); list.add("Three"); list.add("|"); list.add("Four"); System.out.println("list 集合中的元素数量:" + list.size()); System.out.println("list 集合中的元素如下:"); Iterator it = list.iterator(); while (it.hasNext()) { System.out.print(it.next() + "、"); } System.out.println("\n在 list 集合中'丨'第一次出现的位置是:" + list.indexOf("|")); System.out.println("在 list 集合中'丨'最后一次出现的位置是:" + list.lastIndexOf("|")); }
上面的代码创建了一个List集合list,之后,添加了7个元素,因为索引从0开始,所以最后一个元素的索引为6。
输出结果:
list 集合中的元素数量:7 list 集合中的元素如下: One、|、Two、|、Three、|、Four、 在 list 集合中'|'第一次出现的位置是:1 在 list 集合中'|'最后一次出现的位置是:5
示例:使用subList()方法截取List集合中部分元素的时候要注意,新的集合中包含起始索引位置的元素,可是不包含结束索引位置的元素,例,subList(1,4)方法实际截取的是索引1到索引3的元素,并组成新的List集合。
下面的代码演示了subList()方法的具体用法:
public static void main(String[] args) { List list = new ArrayList(); list.add("One"); list.add("Two"); list.add("Three"); list.add("Four"); list.add("Five"); list.add("Six"); list.add("Seven"); System.out.println("list 集合中的元素数量:" + list.size()); System.out.println("list 集合中的元素如下:"); Iterator it = list.iterator(); while (it.hasNext()) { System.out.print(it.next() + "、"); } List sublist = new ArrayList(); sublist = list.subList(2, 5); // 从list集合中截取索引2~5的元素,保存到sublist集合中 System.out.println("\nsublist 集合中元素数量:" + sublist.size()); System.out.println("sublist 集合中的元素如下:"); it = sublist.iterator(); while (it.hasNext()) { System.out.print(it.next() + "、"); } }
输出结果:
list 集合中的元素数量:7 list 集合中的元素如下: One、Two、Three、Four、Five、Six、Seven、 sublist 集合中元素数量:3 sublist 集合中的元素如下: Three、Four、Five、
关于Java List集合ArrayList类用法你都了解了吗?更多和Java List集合等方面相关的java基础知识,请继续通过奇Q工具网来进行学习吧!
推荐阅读: