java 集合只能保存对象_JAVA使用集合类保存对象,List集合类学习

Java中的集合对象就是一个容器,用来存放Java类的对象。我们知道,一种容器,例如水桶的水很方便倒入和取出。例如柜子里的衣服,有序摆放,更方便查找。Java的集合类也一样,不同的集合类和各自的作用!

在Java.util包中提供了集合类,集合类又叫容器。在之前我们学习过数组,集合类不同于数组,数组长度固定,集合类长度可变,数组用来存放基本类型,集合用来存放对象的引用。

常用的集合类有List集合,Set集合,Map集合。List和Set类继承了Collection接口。各自的接口有不同的实现类实现不同的作用。如图可以清楚的看出来各自的继承和实现关系。

c1f43a38b9404368a80f038c7a636868.png

关于List集合

List中的元素是运行重复的,各元素间排列顺序就是对象的插入顺序。类似于数组,我们可以通过索引来访问元素。

List接口

List接口继承了Collection接口,所以包含了Collection中所有方法。List当然也有属于自己的一些常用方法。

List接口的实现类常用的是ArrayList和LinkedList。我们知道,父类的引用可以指向任何子类的对象,所以,我们可以使用List li = new ArrayList();来创建集合类对象。

关于集合的遍历

第一种方法可以通过For循环来遍历元素。

for(int i;i<=li.size();i++){

System.out.println(list.get(i));

}

第二种遍历方法可以使用迭代器便利元素

Iterator it = li.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

List集合类的add(int index,object obj)方法可以将元素添加到集合中,set(int index,object obj)方法可以修改集合中的元素。set方法的索引位置依然是从0开始。

看以下代码:

[CODE=java]

import java.util.*;

public class MyList {

public static void main(String[] args) {

String a = "A";

String b = "B";

String c = "C";

String d = "D";

List li = new LinkedList();

li.add(a);

li.add(b);

li.add(c);

li.add(d);

System.out.println("第一种访问方式");

for (int i = 0; i < li.size(); i++) {

System.out.print(li.get(i) + " ");

}

System.out.println();

System.out.println("第二种访问方式");

Iterator it = li.iterator();

while (it.hasNext()) {

System.out.print(it.next() + " ");

}

System.out.println();

System.out.println("集合中元素在未修改前");

for (int i = 0; i < li.size(); i++) {

System.out.print(li.get(i) + " ");

}

String e = "E";

System.out.println();

System.out.println("将索引位置为2的元素修改为E");

li.set(2, e);

for (int i = 0; i < li.size(); i++) {

System.out.print(li.get(i) + " ");

}

}

}

[/CODE]

代码执行结果:

第一种访问方式

A B C D

第二种访问方式

A B C D

集合中元素在未修改前

A B C D

将索引位置为2的元素修改为E

A B E D

因为List对象中可以包含重复对象,若要获取重复对象第一次出现的位置可以使用indexOf()方法,想获取对象最后一次出现的位置可以使用lastIndexOf()方法。索引位置依然从0开始,如果指定对象在List集合中只有一个,则通过这两个方法获得的索引值是相同的。所以可以得到一种,判断集合类中某元素对象是否有重复元素的方法,就是,indexOf()方法和lastIndexOf()方法得到的值相同。

看以下代码:

[CODE=java]

import java.util.*;

public class MyList {

public static void main(String[] args) {

String a = "A";

String b = "lanyan";

String c = "C";

List li = new LinkedList();

li.add(a);

li.add(b);

li.add(b);

li.add(a);

li.add(b);

li.add(a);

li.add(c);

System.out.println("对象lanyan首次出现的位置是:" + li.indexOf(b));

System.out.println("对象lanyan最后一次出现的位置是:" + li.lastIndexOf(b));

if (li.indexOf(c) == li.lastIndexOf(c)) {

System.out.println("对象c在集合中没有重复");

}

if (li.indexOf(a) != li.lastIndexOf(a)) {

System.out.println("对象a在集合中有重复");

}

}

}

[/CODE]

代码执行结果:

对象lanyan首次出现的位置是:1

对象lanyan最后一次出现的位置是:4

对象c在集合中没有重复

对象a在集合中有重复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值