public class Connection集合 {
public static void main(String[] args) {
//List系列集合添加数据是有序的,可重复的,有索引
//Set系列集合添加数据是无序的,不可重复的,无索引
//多态,Array是Coll的子类,因为Coll是接口,创建对象时只能创建其实现类的对象。
Collection<String> coll = new ArrayList<>();
//添加元素
coll.add("11c");//返回一个boolean值。这个永远为true,因为List集合可以元素重复,而set则不能。
coll.add("lzh");
coll.add("cxk");
System.out.println(coll);
//清除所有元素
//coll.clear();
System.out.println(coll);
//删除
coll.remove("cxk");
System.out.println(coll);
//包含
//底层代码是依赖equals方法判断元素是否存在的。
//若集合中存储的是自己定义的类对象,使用contains方法判断时,
//要在类中重写equals方法,不然使用的是obj类的equals方法
//是根据地址值进行比较的.
boolean flag = coll.contains("11c");
System.out.println(flag);//true
//为空
System.out.println(coll.isEmpty());
//获取集合长度
//上面删除了一个元素,所以这里为2
System.out.println(coll.size());
}
}
迭代器的遍历
public class 迭代器遍历 {
public static void main(String[] args) {
Collection<String> co = new ArrayList<>();
co.add("11c");
co.add("lzh");
co.add("cxk");
//因为Iterator是根据索引来进行遍历,所以List系列集合可以用,Set系列不可以用.
Iterator<String> it = co.iterator();
//迭代器对象的haxNext()方法,判断当前指针上是否有元素。
while (it.hasNext()){
String next = it.next();//next 获取当前指针上的元素返回,并且将指针后移一个位置。
System.out.println(next);
}//这就是迭代器的遍历方式
//细节方面,迭代器遍历中只能使用一次next方法,不然会报错误NoSuchElementsException
//迭代完成后,指针不会复位。所以想再次遍历时,只能再创建一个迭代器对象。
//迭代中不能使用集合的方式添加删除元素,可以用迭代器对象it的remove方法进行删除。
System.out.println("_____________________________________________1");
//超级加强for循环。
//所有单列集合和数组才可以使用增强for循环。
//for(元素数据类型 变量名 : 集合或数组){}
//这里的s不会修改集合或数组中的数据,因为它只是一个记录的三方变量。
for (String s : co) {
System.out.println(s);
}
System.out.println("_____________________________________________2");
//lambda表达式简化循环
//先使用匿名内部类的方式书写
//底层代码会遍历集合,将元素传给accept方法
//s依次表示集合中的每个数据
co.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
System.out.println("_____________________________________________3");
//简化
co.forEach(s -> System.out.println(s));
}
}
List的常见方法及其遍历方式
public class List常见方法和遍历方式 {
public static void main(String[] args) {
//List继承了collection的方法,因为有索引,所以有很多可以操作索引的方法
List<String> list = new ArrayList();
//添加元素
list.add("11c");
list.add("lzh");
list.add("cxk");
list.add(1,"hpy");//在索引1的位置插入元素,原来的元素会被后移
System.out.println(list);
System.out.println("---------------------------------");
//删除元素
//remove()有两个,一个是根据索引,一个是根据参数,如果是Integer类型,那么删除是根据索引还是元素呢?
//这个是根据实参和形参一致的优先调用
String remove = list.remove(2);//返回值是被删除的元素
boolean flag = list.remove("lzh");
System.out.println(list);
System.out.println("---------------------------------");
//修改元素
list.add("lzh");
list.add("cxk");
Object set = list.set(2, "kxc");//返回值是被修改的元素。
System.out.println(list);
System.out.println("---------------------------------");
//因为前面已经写过集合的遍历方式,所以这里只写普通for循环和列表迭代器
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
//List特有的,可以在遍历过程中添加元素
System.out.println("111111111---------11111111");
ListIterator<String> it = list.listIterator();
while (it.hasNext()){
String next = it.next();
if ("cxk".equals(next)){
it.add("hello");//这里一定要使用迭代器对象进行添加,我就是报了错误,突然想起来不能使用list.add()添加。
}
}
System.out.println(list);
}
}
本来这些代码昨天都学完了,但是昨天一个老朋友约我见面,所以也没有写,大早上起来把博客给写了哈哈哈。