网站空间稳定性,wordpress 移动端不显示,怎么做网页dw,广州网站快速排名优化一、单列集合Collection List系列集合特点#xff1a;添加的元素是有序#xff08;存和取的顺序一致#xff09;、可重复、有索引
Set系列集合特点#xff1a;添加的元素是无序#xff08;存和取的顺序有可能不一致#xff09;、不重复、无索引 Collection是所有单列集合…一、单列集合Collection List系列集合特点添加的元素是有序存和取的顺序一致、可重复、有索引
Set系列集合特点添加的元素是无序存和取的顺序有可能不一致、不重复、无索引 Collection是所有单列集合的祖宗接口其功能所有的单列集合都能继承使用。 import java.util.ArrayList;
import java.util.Collection;public class Main {public static void main(String[] args){//利用多态创建对象//对于成员变量在子类的对象中会把父类的成员变量继承下去。多态创建的对象是采用父类变量。//对于成员方法如果子类对方法进行了重写那么在继承时虚方法表中会覆盖父类的方法因此多态创建的对象采用子类方法。CollectionString collectionnew ArrayList();//1、添加元素//对于同为Collection子类的 List系列集合 和 Set系列集合 两者都继承了父类种的 add 方法//如果是通过List系列集合的对象调用 add 方法则方法永远返回true添加成功因为List系列集合允许元素重复//如果是通过Set系列集合的对象调用 add 方法则方法会在元素不重复的情况下返回true添加成功否则返回false因为Set系列集合不允许元素重复collection.add(abc);collection.add(def);collection.add(ghi);System.out.println(collection); //[abc, def, ghi]//2、清空// collection.clear();// System.out.println(collection); //[]//3、删除//因为Set系列集合具有 无序 的特点因此在父类中定义的remove方法是共性的方法——既无法通过索引删除只能通过元素的对象删除。//方法返回的是boolean类型的值删除成功要删除的元素存在则返回true反之返回false。System.out.println(collection.remove(abc)); //trueSystem.out.println(collection); //[def, ghi]//4、判断元素是否包含//contains方法底层是依赖equals方法进行判断是否存在的//如果集合中存储的是自定义对象也想通过contains方法判断是否包含在Javabean中一定要重写Equals方法//因为对于引用数据类型equals方法比较的是元素的地址值boolean result1collection.contains(def);boolean result2collection.contains(defg);System.out.println(result1); //trueSystem.out.println(result2); //false//5、判断集合是否为空boolean result3collection.isEmpty();System.out.println(result3); //false//6、判断集合长度System.out.println(collection.size()); //2collection.add(abc);System.out.println(collection.size()); //3}}二、Collection遍历方式
一迭代器遍历
特点不依赖索引
迭代器在Java中的类是Iterator迭代器是集合专用的遍历方式。 注意点
①代器遍历结束后指针不会复位若需要再次遍历只能再创建一个新的迭代器对象
②循环中只能用一次next方法可以用一个变量进行记录
③迭代器遍历时不能用集合的方法进行增加或者删除若要进行删除操作需要用迭代器对象调用remove方法增加目前没有办法
④如果当前位置没有元素还要强行获取会报错报错类型位NoSuchElementException
import java.util.ArrayList;
import java.util.Iterator;public class Main {public static void main(String[] args){ArrayListString listnew ArrayList();list.add(三);list.add(连);list.add(外);list.add(加);list.add(转);list.add(发);list.add(了);list.add(吗);list.add();list.add();IteratorString itlist.iterator(); //返回迭代器对象默认指向集合的0索引boolean flagit.hasNext();System.out.println(flag);String strit.next();//获取当前元素并将迭代器对象移向下一个位置System.out.println(str);// 三strit.next();System.out.println(str);// 连}
}import java.util.ArrayList;
import java.util.Iterator;public class Main {public static void main(String[] args){ArrayListString listnew ArrayList();list.add(三);list.add(连);list.add(外);list.add(加);list.add(转);list.add(发);list.add(了);list.add(吗);list.add();list.add();IteratorString itlist.iterator(); //返回迭代器对象默认指向集合的0索引boolean flagit.hasNext();System.out.println(flag);//使用迭代器进行遍历while(it.hasNext()){String strit.next();System.out.print(str );//三 连 外 加 转 发 了 吗 }}
}二增强for遍历
①增强for的底层就是迭代器为了简化迭代器的代码书写的。
②是JDK5之后出现的内部原理就是一个Iterator迭代器。
③所有的单列集合和数组才能用增强for进行遍历。
格式 例
import java.util.ArrayList;
import java.util.Collection;public class Main {public static void main(String[] args){//集合的三种遍历方式迭代器遍历 增强for循环遍历 lambda表达式遍历CollectionString listnew ArrayList();list.add(三);list.add(连);list.add(外);list.add(加);list.add(转);list.add(发);list.add(了);list.add(吗);list.add();list.add();//增强for循环遍历//快速生成方式 list.for 集合名字.forfor(String s:list){System.out.print(s );}}
}注意点
修改增强for中的变量不会改变集合中原本的数据遍历过程中是用第三方变量记录集合中的元素修改增强for中的变量不影响集合元素
三Lambda表达式遍历
例
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;public class Main {public static void main(String[] args){//集合的三种遍历方式迭代器遍历 增强for循环遍历 lambda表达式遍历CollectionString listnew ArrayList();list.add(三);list.add(连);list.add(外);list.add(加);list.add(转);list.add(发);list.add(了);list.add(吗);list.add();list.add();//增强for循环遍历for(String s:list){System.out.print(s );}System.out.println();System.out.println(________________________);//使用匿名内部类的形式遍历list.forEach(new ConsumerString() {Override//s依次表示集合中的每一个数据//方法底层也是遍历集合依次得到每一个元素把得到的每一个元素传递给下面的accept方法//s依次表示集合中的每一个数据public void accept(String s) {System.out.print(s );}});System.out.println();System.out.println(___________________________);//使用Lambda表达式简化匿名内部类方法list.forEach(s- System.out.print(s ));}
}四总结 三、List系列集合
特点有序、有索引、可重复
List集合方法
①Collection的方法都继承了
②List集合有索引有很多关于索引操作的方法 关于remove方法的问题
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;public class Main {public static void main(String[] args){//List系列集合ListInteger list1new ArrayList();list1.add(1);list1.add(2);list1.add(3);//若想要删除元素1//list1.remove(1); 会判断1为集合的索引而不是元素//正确方法list1.remove((Integer) 1);System.out.println(list1); //[2, 3]}
}原因remove方法在调用时发生了重载现象默认优先调用实参和形参类型一致的方法。
方法示例代码
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args){//List系列集合//因为List类是一个接口类所以不能直接创建接口类的对象//在这边只能创建一个List的实现类的对象ListString listnew ArrayList();list.add(aaa);list.add(bbb);list.add(ccc);list.add(ddd);System.out.println(list); //[aaa, bbb, ccc, ddd]// add(int index,E element) 在指定索引出插入指定的元素list.add(0,fff);System.out.println(list); //[fff, aaa, bbb, ccc, ddd]System.out.println(__________________);//E removeint index) 删除指定索引处的元素返回被删除的元素String removelist.remove(2);System.out.println(remove); //bbbSystem.out.println(list); //[fff, aaa, ccc, ddd]// E set(int index,E element) 修改指定索引处的元素将被修改处的原元素返回System.out.println(_____________________);String setlist.set(0,hahaha);System.out.println(set); //fffSystem.out.println(list); //[hahaha, aaa, ccc, ddd]System.out.println(_________________);//E get(int index) 返回指定索引处的元素String getlist.get(0);System.out.println(get); //hahaha}
}List集合遍历方式 示例代码
import java.util.*;public class Main {public static void main(String[] args){//List系列集合遍历方法ListString listnew ArrayList();list.add(aaa);list.add(bbb);list.add(ccc);list.add(ddd);System.out.println(list); //[aaa, bbb, ccc, ddd]System.out.println(__________________________);//1、迭代器遍历//创建迭代器对象IteratorString itlist.iterator();System.out.print(迭代器遍历 );while(it.hasNext()){String strit.next();System.out.print(str );}System.out.println();System.out.println(________________);//2、增强for遍历System.out.print(增强for遍历);for (String s : list) {System.out.print(s );}System.out.println();System.out.println(______________________);//3、Lambda表达式遍历System.out.print(Lambda表达式遍历);list.forEach(s- System.out.print(s ));System.out.println();System.out.println(___________________);//4、普通for循环遍历System.out.print(普通for循环遍历);for(int i0;ilist.size();i){System.out.print(list.get(i) );}System.out.println();System.out.println(_________________________);//5、列表迭代器遍历//创建列表迭代器对象//比迭代器多了一个功能 能够在遍历的同时添加元素之前只能用迭代器的remove方法删除元素ListIteratorString litlist.listIterator();System.out.print(列表迭代器遍历 );while(lit.hasNext()){String strlit.next();if(ddd.equals(str)){lit.add(qqq);}System.out.print(str ); //aaa bbb ccc ddd }System.out.println();System.out.println(list); //[aaa, bbb, ccc, ddd, qqq]}
}五种方法对比