//list.clear();//清空集合
System.out.println(c.contains(600));//false,集合中不包括600
System.out.println(c.isEmpty());//false,集合不为空
System.out.println(c.remove(100));//删除集合中的元素100
System.out.println(c);
System.out.println(c.size());//4,获取集合中的元素个数
c.retainAll(c2);//取c和c2共有的元素
System.out.println(Arrays.toString(c.toArray()));//集合转数组并打印
System.out.println(list.contains("100"));//false,是否包含string类型的元素100
System.out.println(list.get(0));//100,获取集合中下标处为0元素
System.out.println(list.indexOf(400));//获取元素第一次出现的索引
System.out.println(list.lastIndexOf(400));//获取元素最后一次出现的索引
list.remove(1);//删除下标处为1的元素
System.out.println(list);
//System.out.println(list.remove(300));
/*上面的代码会报错:数组下标越界:index 300 size 5
* 主要是因为List中有两个重载的remove()方法,
* 如果直接传入数字300
* 会直接匹配int类型的index索引方法,而不会认为这是一个integer类型的数据
* 所以,如果想要根据指定元素删除数据,需要把int类型的数据手动装箱成integer*/
list.remove(Integer.valueOf(300));//
System.out.println(list);
list.size();//获取集合的元素个数
list.set(2, 777);//修改下标2的元素值,值为777
System.out.println(list);
整体表示操作
List<String> list = new ArrayList<>();
list.add("徐凤年");
list.add("南宫仆射");
list.add("姜泥");
list.add("裴南苇");
list.add("轩辕青锋");
System.out.println(list);
System.out.println(list.contains("徐凤年"));//true
System.out.println(list.isEmpty());//true
System.out.println(list.remove("轩辕青锋"));//删除元素轩辕青锋
System.out.println(list.size());//4,获取集合中的元素
System.out.println(Arrays.toString(list.toArray()));//转数组并打印
List<String> list1 = new ArrayList<>();
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
System.out.println(list1);
list.addAll(list1);//将集合list1的元素添加到list中
System.out.println(list);
System.out.println(list.containsAll(list1));//true,判断集合1是否包含集合2中的所有元素
list.removeAll(list1);//删除集合1中属于集合2的元素
System.out.println(list);
list1.retainAll(list);//保留集合2中两个集的公共元素
System.out.println(list);
System.out.println(list1);//变成空集,谁来谁调用影响
/*List接口是有下标的、有序的、可以存放重复元素的*/
list.add("陆丞燕");//追加在最后
list.add(1,"王初冬");//在指定的索引处添加元素
list.add(3,"姜泥");
System.out.println(list);
System.out.println(list.indexOf("姜泥"));//判断元素第一次出现的下标
System.out.println(list.lastIndexOf("姜泥"));//判断元素最后一次出现的下标
list.remove(4);//根据下标删除元素,并把被删除的元素返回
System.out.println(list);//[徐凤年, 王初冬, 南宫仆射, 姜泥, 裴南苇, 陆丞燕]
System.out.println(list.get(5));//陆丞燕,根据索引获取对应的元素
System.out.println(list.set(1, "红薯"));//王初冬,根据索引修改指定位置的元素
System.out.println(list);//[徐凤年, 红薯, 南宫仆射, 姜泥, 裴南苇, 陆丞燕]
list1.add("1");
list1.add("2");
list1.add("3");
list.addAll(list1);
System.out.println(list);
list.addAll(1,list1);
System.out.println(list);
集合的迭代方式
//创建List接口的多态对象
List<String> list = new ArrayList<>();
list.add("陈平安");
list.add("顾璨");
list.add("林守一");
list.add("刘羡阳");
list.add("李槐");
list.add("李宝瓶");
System.out.println(list);
/*集合的迭代方式
* 1.for循环
* 2.foreach循环
* 3.iterator迭代器循环
* 4.listIterator
* */
//方式一:因为List集合是有序的,元素是有下标的,所以可以根据下标进行遍历
//从哪开始 到哪结束 如何变化
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("*********方式一*********");
//方式二:因为普通for循环写法复杂,效率还低,所以使用高效for循环
//格式:for(每轮遍历到的元素类型 元素名:要便利的数组/集合名){循环体}
for(String s:list){
System.out.println(s);
}
System.out.println("******************方式二*************");
//方式三:使用的是从父接口Collection处继承过来的迭代器iterator
Iterator<String> s = list.iterator();
while (s.hasNext()){
System.out.println(s.next());
}
System.out.println("***********方式三*************");
//方式四:使用List接口特有的迭代器ListIterator
/*ListIterator是List接口特有的迭代器
* ListIterator<E>---子接口---继承了父类的功能
* 还有自己的特有功能,比如逆序遍历,但是并不常用*/
ListIterator<String> it = list.listIterator();
while (it.hasNext()){
System.out.println(it.next());
}