下面要给大家介绍的就是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
{
// 循环遍历集合,输出集合元素
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工具网来进行学习吧!
推荐阅读: