集合用来保存一组数据 且长度不固定 ,声明集合时需要泛型。
JAVA库中带collection类,是除了Map外所有其他集合类的根接口。
包含了LIst 和 Set 还有Map 三种类型的集合。
ArrayList接口是一个允许元素重复的有序的接口,
在接口尾部添加一个元素的方法是add方法
add(“x")是添加x到元素尾部, add(a,"x")是添加x到下标a处(有可能出现下标越界情况)
集合A addall.(子集合) 是添加子集合的方法。
ArrayList<String> singerList = new ArrayList<String>();
singerList.add("周杰伦");
singerList.add(3,"死亡颂唱者");
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
list2.add("杀疯了");
list1.addAll(list2);
得到元素的方法
get方法
得到元素的方法。
String first = list1.get(0);
String last = list1.get(list1.size()-1);
sublist(0,5) 是截取下标0-5的元素。
List<String> newlist = list1.subList(0, 5);
System.out.println("原集合"+list1);
System.out.println("现有的集合"+newlist.toString());
链表LinkedList中每个元素都指向下一个元素
ArrayList的优点在于获取指定元素时的速度很快,而Linkedlist每次获取指定元素都需要从头开始查找元素。
ArrayList在指定位置添加或者删除元素的时候需要移动元素而Linkedlist不需要移动元素。
且我们可以用Arrays工具类的aslist方法快速创建list
java.util.List<String> list = Arrays.asList("1","2");
且存在迭代器Iterator
其实迭代器也需要创建迭代器对象。
而hasNext()是判断有没有下一个元素,而next()是得到下一个元素
for(Iterator<String> it1 = list1.iterator();it1.hasNext();) {
System.out.println(it1.next());
}
元素的搜索
可以使用contains方法 返回结果为boolean值
也可以使用index of 方法返回 int 类型的下标(若存在则返回下标值,不存在则返回-1)
Lastindex of方法则是返回最后一次出现时的下标值。
list1.contains("Y");
list1.indexOf("Y");
list1.lastIndexOf("Y");
在List当中的set方法修改指定元素的下标
remove方法是删除指定下标元素, 也可以按照元素指定内容删除
set和remove方法的返回值都是Old Value
clear方法则是清空
String oldValue = singerList.set(2, "品冠儿子");
String oldValue1 =singerList.remove(3);
System.out.println(oldValue);
System.out.println(oldValue1);