List是有序的集合接口,该接口可以对列表中每个元素的插入位置进行精确地控制,可以根据元素的索引(List中的索引跟数组一样,都是从0开始)访问元素,可以结合Iterator接口进行列表的遍历。
示例:List的增删改查和遍历import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo
{
public static void main(String[] args)
{
// List是接口,不能实例化
// ArrayList是List接口的实现类之一,可以实例化!
List cityList = new ArrayList();
// 增
cityList.add("广州市");
cityList.add("深圳市");
cityList.add("东莞市");
cityList.add("佛山市");
cityList.add("湛江市");
// 删
cityList.remove(4);// 以索引的方式删除元素,此处对应的是元素“湛江市”
cityList.remove("佛山市");// 以对象的方式直接删除
// 改
cityList.set(2, "珠海市");// 把“东莞市”改为“珠海市”
// 查
int index = cityList.indexOf("深圳市");
System.out.println("深圳市在广东省中排名:" + index);
// 遍历
for (Iterator cityIterator = cityList.iterator(); cityIterator.hasNext(); )
{
String cityName = cityIterator.next();
System.out.println(cityName);
}
}
}
// 打印结果:
深圳市在广东省中排名:1
广州市
深圳市
珠海市
实际的工作过程中,List通常需要结合项目的业务需求进行判断操作。假设有这样的需求场景:随机生成一定数量的数字序列(0-9)到集合List,然后统计该集合List中每个数字出现的次数!
代码实现过程如下:import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
/**
* 分组统计List集合中数字出现的次数!
*
* @author thinker
*/
public class ListDemo2
{
public static void main(String[] args)
{
Random random = new Random();
List digitList = new ArrayList();
if (digitList.isEmpty())
{
// 此处简单展示 isEmpty方法的使用!
System.out.println("Now, List Is Empty!");
}
for (int i = 0; i
{
digitList.add(random.nextInt(10));
}
// 此处简单展示 size方法的使用!
int size = digitList.size();
{
System.out.println("Now, List's Size:" + size);
}
List statList = new ArrayList();
for (Integer digit : digitList)
{
Digit o = new Digit();
o.setDigit(digit);
if (statList.contains(o))
{
// 通过索引获取到List集合中的对象
// 然后该对象更新数字出现的次数
// 再把该对象替换到List集合中!
int index = statList.indexOf(o);
Digit currentDigit = statList.get(index);
o.setCounter(currentDigit.getCounter() + 1);
statList.set(index, o);
}
else
{
o.setCounter(1);
statList.add(o);
}
}
// 对List集合中的数字进行升序排序!
Collections.sort(statList, new Comparator()
{
@Override
public int compare(Digit o1, Digit o2)
{
// TODO Auto-generated method stub
return o1.getDigit() - o2.getDigit();
}
});
for (Digit digit : statList)
{
Integer digitNumber = digit.getDigit();
int counter = digit.getCounter();
System.out.println("Digit[" + digitNumber + "] Occur " + counter + " times!");
}
}
private static class Digit
{
private Integer digit;// 统计的数字
private int counter;// 统计的数字出现的次数
public Integer getDigit()
{
return digit;
}
public void setDigit(Integer digit)
{
this.digit = digit;
}
public int getCounter()
{
return counter;
}
public void setCounter(int counter)
{
this.counter = counter;
}
// 如果数字相同,就判断该对象相同!
public boolean equals(Object o)
{
if (o == null) return false;
if (o instanceof Digit)
{
Digit oDigit = (Digit)o;
if (oDigit.digit == this.digit)
{
return true;
}
}
return false;
}
}
}
打印结果:
Now, List Is Empty!
Now, List's Size:60
Digit[0] Occur 3 times!
Digit[1] Occur 6 times!
Digit[2] Occur 7 times!
Digit[3] Occur 7 times!
Digit[4] Occur 8 times!
Digit[5] Occur 7 times!
Digit[6] Occur 7 times!
Digit[7] Occur 3 times!
Digit[8] Occur 7 times!
Digit[9] Occur 5 times!