黑马程序员-------集合框架Collection List

来源:互联网 发布:cf手游领礼包软件 编辑:程序博客网 时间:2024/05/21 14:58

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

Collection介绍与方法

package day14;import java.util.ArrayList;import java.util.Iterator;/** * 集合框架Collection 及方法 * @author hao * *1.add方法参数是Object 可以接收任意参数 *2.集合存入的都是对象引用 * *迭代器 *其实就是集合取出元素的方式 * *就把取出方式定义在集合的内部,这样取出方式就可以直接访问集合内容的元素 *那么取出方式就被定义成了内部类 * *由于每个容器的数据结构不同,所以取出的动作细节也不一样。但都有共性的内容 *取出和判断。那么可以将共性抽取。 * *那么这些内部类符合一个规则。该规则是Iterator。 *通过一对外提供的方法iterator()来获取集合取出对象 */public class CollectionDemo {public static void main(String[] args){//method_02();method_get();}public static void method_get(){ArrayList al = new ArrayList();al.add("haohao01");al.add("haohao02");al.add("haohao03");al.add("haohao04");/*Iterator it = al.iterator();while(it.hasNext()){sop(it.next());}*/for(Iterator it = al.iterator();it.hasNext();){sop(it.next());}}public static void method_02(){ArrayList al = new ArrayList();ArrayList all = new ArrayList();al.add("haohao01");al.add("haohao02");al.add("haohao03");al.add("haohao04");all.add("haohao01");all.add("haohao02");all.add("haohao05");all.add("haohao06");all.retainAll(al);//去交集,all中只保存和al一样的元素sop(all);}public static void method_01(){//创建一个集合容器。使用Collection 接口的子类。ArrayListArrayList al = new ArrayList();//1.添加元素al.add("haohao01");al.add("haohao02");al.add("haohao03");al.add("haohao04");//打印愿集合sop("原集合:"+al);//获取元素的个数,集合的长度sop("size:"+al.size());//删除集合//al.remove("haohao02");//al.clear();//判断元素sop(al.contains("haohao01"));sop(al.isEmpty());//打印改变后的集合sop(al);}public static void sop(Object obj){System.out.println(obj);}}

List集合

package day14;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/** * List 集合 *  * @author hao *  *         Collection |--List:元素是有序的,元素是可以重复的 因为该集合体系有索引 * |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度快,但是增删稍慢,线程不同步 * |--LinkedList:底层使用的链表数据结构。 特点:增删速度快,查询稍慢。 * |--Vector:线程同步。被ArrayList替代了。 *  *       |--Set: 元素是无序的元素不可以重复 *         List: 特有的方法 凡是也已操作角标的方法都是该体系特有的方法 *  *         增 add(index,element) addAll(index,Collection) *  *         删 remove(index) *  *         改 set(index,element) *  *         查 get(index) subList(begin,end) listIterator() *  *  *  * List 集合特有的迭代器,ListIterator是Iterator的子接口 *  * 在迭代是,不可以通过集合对象的方法操作集合中的元素。应为 * 发生ConcurrentModificationException异常 *  * 此时的迭代器Iterator方法是有限的,只能对元素进行判断,取出,删除的操作 * 如果想要其他的操作如添加,修改等,就需要Iterator的子接口ListIterator *  * 该接口只能通过List集合listIterator()方法获得 */public class ListDemo {public static void main(String[] args) {// method_1();// 演示列表迭代器ArrayList al = new ArrayList();// 添加元素al.add("haohao01");al.add("haohao02");al.add("haohao03");/*for(Iterator it = al.iterator(); it.hasNext();){Object obj = it.next();if(obj.equals("haohao02"))//al.add("hahaha");//ConcurrentModificationException异常it.remove(); //将haohao02从集合中删除}sop(al);*/ListIterator li = al.listIterator();while(li.hasNext()){Object obj = li.next();if(obj.equals("haohao02"))li.add("dddd");//li.set("ssssss");}while(li.hasPrevious()){sop("previous:"+li.previous());}//sop(al);}public static void method_1() {ArrayList al = new ArrayList();// 添加元素al.add("haohao01");al.add("haohao02");al.add("haohao03");sop("原有的集合:" + al);// 在指定的位置添加元素al.add(1, "ddd");// 删除指定位置的元素al.remove(3);// 修改指定元素al.set(1, "wawawa");// 通过角标获取元素sop("get(2)=" + al.get(2));sop(al);// 获取所有的元素for (int i = 0; i < al.size(); i++) {sop("al[" + i + "]=" + al.get(i));}for (Iterator it = al.iterator(); it.hasNext();) {sop("next:" + it.next());}// 通过indexOf获取对象的位置sop("index=" + al.indexOf("haohao02"));List sub = al.subList(0, 2);sop(sub);}public static void sop(Object obj) {System.out.println(obj);}}

     LinkedList类

package day14;import java.util.LinkedList;/** * LinkedList * @author hao * *LinkedList:特有方法 *addFrist() *addLast() * *getFrist() *getLast() *获取元素,但不删除元素。如果集合中没有元素  会出现NoSuchElementException * *removeFirst() *removeLast() *获取元素,但是元素被删除。如果集合中没有元素  会出现NoSuchElementException * *offerFirst() *offerLast() * *peekFist() *peekLast() * *pollFist() *pollLast() *获取元素,如果元素被删除,集合中没有元素,会返回null */public class LinkedListDemo {public static void main(String[] args){LinkedList link = new LinkedList();/*link.add("haohao01");link.add("haohao02");link.add("haohao03");link.add("haohao04");结果:[haohao01, haohao02, haohao03, haohao04]*//*link.addFirst("haohao01");link.addFirst("haohao02");link.addFirst("haohao03");link.addFirst("haohao04");结果:[haohao04, haohao03, haohao02, haohao01]*/link.addLast("haohao01");link.addLast("haohao02");link.addLast("haohao03");link.addLast("haohao04");//结果:[haohao01, haohao02, haohao03, haohao04]//sop(link);//sop(link.getFirst());//sop(link.getLast());//sop(link.removeFirst());//sop(link.removeLast());////sop("size="+link.size());while(!link.isEmpty()){sop(link.removeFirst());}}public static void sop(Object obj){System.out.println(obj);}}

ArrayList 练习

package day14;import java.util.ArrayList;import java.util.Iterator;/** * 去除ArrayList集合中重复的元素 *  * @author hao *  */public class ArrayListTest {public static void main(String[] args) {ArrayList al = new ArrayList();al.add("haohao01");al.add("haohao02");al.add("haohao03");al.add("haohao01");al=singleElement(al);sop(al);}private static void sop(Object obj) {System.out.println(obj);}public static ArrayList singleElement(ArrayList al) {// 定义一个临时容器ArrayList newAl = new ArrayList();Iterator it = al.iterator();while (it.hasNext()) {Object obj = it.next();if (!newAl.contains(obj))newAl.add(obj);}return newAl;}}

package day14;import java.util.ArrayList;import java.util.Iterator;/** * 自定义对象存储 * @author hao * *将自定义队形最为元素存到ArrayList集合中,并去除重复的元素。 *比如:存人对象,同姓名同年龄,视为同一人,为重复元素 * *思路: *1.对人描述,将数据封装进入人对象 *2.定义容器,将人存入 *3.取出 */class Person{private String name;private int age;public Person(String name, int age) {super();this.name = name;this.age = age;}//重写父类的equals方法public boolean equals(Object obj) {Person p = (Person)obj;return this.name.equals(p.name)&&this.age==p.age;}//重写父类的toString方法public String toString() {return "姓名:"+this.name+"  年龄:"+this.age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}public class ArrayListTest2 {public static void main(String[] args) {ArrayList al = new ArrayList();al.add(new Person("hao01", 15));al.add(new Person("hao02", 42));al.add(new Person("hao03", 15));al.add(new Person("hao01", 15));al= singleElement(al);for (Object object : al) {System.out.println(object);}}public static ArrayList singleElement(ArrayList al) {// 定义一个临时容器ArrayList newAl = new ArrayList();Iterator it = al.iterator();while (it.hasNext()) {Object obj = it.next();if (!newAl.contains(obj))newAl.add(obj);}return newAl;}}

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

0 0
原创粉丝点击