java集合之List:ArrayList、Vector、LindedList

List/ArrayList

package com.qianfeng.test;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class Demo2 {

public static void main(String[] args) {

    //* List:特有方法,可以操作下标
    List list = new ArrayList<>();
    //1.增:
    //void add(int index, E element) 
    list.add("java");
    list.add(0,"python");
    list.add("html");
    list.add("java1");
    list.add("BigData");
    System.out.println(list);
    //boolean addAll(int index, Collection<? extends E> c) 

    //2.删
    //E remove(int index)  这里可以将E暂时理解成Object
    System.out.println(list.remove(0));
    System.out.println(list);

    //3.改
    //E set(int index, E element)
    System.out.println(list.set(0, "iOS"));
    System.out.println(list);

    //4.查
    //ListIterator<E> listIterator() 
    //返回此列表元素的列表迭代器(按适当顺序)。 
    //ListIterator<E> listIterator(int index) 
    test(list);

    //List<E> subList(int fromIndex, int toIndex) 
    List list2 = list.subList(1, 3);
    System.out.println(list2);
    //E get(int index) 
    System.out.println(list.get(0));

    //5.删除全部对象
    list.clear();

}

//4.查
//ListIterator<E> listIterator() 
public static void test(List list){
    //获取迭代器对象
    ListIterator iterator = list.listIterator();
    //从左到右遍历
    while (iterator.hasNext()) {
        Object object = (Object) iterator.next();
        System.out.println("从左到右:"+object);
    }

    //从右到左遍历
    while (iterator.hasPrevious()) {
        Object object = (Object) iterator.previous();
        System.out.println("从右到左:"+object);

    }

    //注意事项:
    while (iterator.hasNext()) {
        Object object = (Object) iterator.next();
        System.out.println("从左到右:"+object);

        //需求:将list中的html删除
        if (object.equals("html")) {
            //在使用迭代器遍历期间,使用list的删除方法直接删除元素,有可能发生错误,所以不要这样做。
            //使用迭代器自带的方法进行删除
            //list.remove("html");
            //注意: 在ListIterator中包含remove,set,add方法,但是最好不要同时使用。
            iterator.remove();
            //iterator.set(e);
            //iterator.add(e);
        }

    }

}

}


Vector

package com.qianfeng.test;

import java.util.Enumeration;
import java.util.Vector;

public class Demo3 {

public static void main(String[] args) {

    //Vector:
    //不同点:遍历的时候使用的是枚举器

    //创建存值
    Vector vector = new Vector<>();
    vector.add("java1");
    vector.add("java2");
    vector.add("java3");
    vector.add("java4");

    System.out.println(vector);

    //遍历--枚举器
    //获取枚举器对象
    Enumeration enumeration = vector.elements();
    //遍历
    while(enumeration.hasMoreElements()){
        Object object = (Object)enumeration.nextElement();
        System.out.println(object);
    }
}

}


LindedList

package com.qianfeng.test;

import java.util.LinkedList;

public class Demo4 {

public static void main(String[] args) {

    LinkedList linkedList = new LinkedList<>();
    //LindedList
    //特有的方法:
    //addFirst()//始终在首位添加
    //addLast()//始终在末尾添加
    linkedList.addFirst("java");
    linkedList.addLast("python");
    linkedList.add("iOS");
    linkedList.add(1,"html");
    linkedList.addFirst("BigData");
    System.out.println(linkedList);

    //getFirst()//获取的对象不存在会发生异常:NoSuchElementException
    //getLast()
    System.out.println(linkedList.getFirst());
    //removeFirst()//删除的对象不存在会发生异常
    //removeLast()
    System.out.println(linkedList.removeFirst());
    //从jdk1.6开始出现以下方法
    //offerFirst()
    //offerLast()
    linkedList.clear();
    //peekFirst()//获取的对象不存在会返回null
    //peekLast()
    System.out.println(linkedList.peekFirst());
    //pollFirst()//删除的对象不存在会返回null
    //pollLast()
    System.out.println(linkedList.pollFirst());

}

}


package com.qianfeng.test;

import java.util.LinkedList;
/*
* 练习:使用LinkedList模拟队列
*/

class MyQueue{

//存储队列中数据
LinkedList<Object> data=new LinkedList<>();
public boolean isEmpty(){
    return data.size()==0?true:false;
}
public void put(Object o){
   data.add(o);
}
public Object get(){
    //从队列中获取元素,获取最先放入元素,获取后从队列中删除该元素
    Object obj=data.getFirst();
    //获取后从队列中删除该元素
    data.removeFirst();
    return obj;
}

}

public class Demo5 {

public static void main(String[] args) {

    MyQueue que=new MyQueue();
    que.put("a");
    que.put("b");
    que.put("c");

    while(!que.isEmpty()){
        //获取第一个元素
        Object k=que.get();
        System.out.println(k);
    }

}

}


list利用contains方法去重

package com.qianfeng.test;

import java.util.ArrayList;
import java.util.Iterator;

/*
* 实例:list特点是有序的,可以重复的
* 要求:使用list存储数据,但是数据不能重复?–利用contains方法
*/
public class Demo6 {

public static void main(String[] args) {

    ArrayList arrayList = new ArrayList<>();
    arrayList.add("java1");//第一个元素
    arrayList.add("java2");//第二个元素
    arrayList.add("java2");//第三个元素
    arrayList.add("java3");
    arrayList.add("java4");
    arrayList.add("java5");

    System.out.println(arrayList);

    //创建一个临时的集合用于存储不重复的元素
    ArrayList arrayList1 = new ArrayList<>();

    //遍历元素集合
    Iterator iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        Object object = (Object) iterator.next();
        //向下转型
        String string = (String)object;
        //如果新的集合中不包含当前的元素,就将当前的元素添加进去
        /*
         * 原理:在添加新元素的时候,返回调用元素的equals方法,去比较,所有的都返回false,整体认为是false.有一次比较
         * 返回true,整个contains的结果就是true
         * 
         * 添加第三个元素的过程:
         * 第三个元素.equels("java1") = false  继续比  第三个元素.equels("java2") = true  停止比较
         */
        if (!arrayList1.contains(string)) {
            arrayList1.add(string);
        }
    }

    System.out.println(arrayList1);

}

}


list去重并重写equals方法
//list去重
package com.qianfeng.test;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo7 {

public static void main(String[] args) {

    ArrayList arrayList = new ArrayList<>();
    arrayList.add(new Person("bingbing", 18));//第一个元素
    arrayList.add(new Person("bingbing1", 19));//第二个元素
    arrayList.add(new Person("bingbing1", 19));//第三个元素
    arrayList.add(new Person("bingbing2", 180));
    arrayList.add(new Person("bingbing3", 118));
    arrayList.add(new Person("bingbing4", 158));

    System.out.println(arrayList);

    //创建一个临时的集合用于存储不重复的元素
    ArrayList arrayList1 = new ArrayList<>();

    //遍历元素集合
    Iterator iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        Object object = (Object) iterator.next();
        //向下转型
        Person person = (Person)object;
        //如果新的集合中不包含当前的元素,就将当前的元素添加进去
        /*
         * 原理:在添加新元素的时候,返回调用元素的equals方法,去比较,所有的都返回false,整体认为是false.有一次比较
         * 返回true,整个contains的结果就是true
         * 
         * 添加第三个元素的过程:
         * 第三个元素.equels("java1") = false  继续比  第三个元素.equels("java2") = true  停止比较
         */
        if (!arrayList1.contains(person)) {
            arrayList1.add(person);
        }
    }

    System.out.println(arrayList1);
}

}

class Person{

String name;
int age;
public Person(String name, int age) {
    super();
    this.name = name;
    this.age = age;
}
@Override
public String toString() {
    return "Person [name=" + name + ", age=" + age + "]";
}

//重写equals方法,制定自己的比较规则:只要年龄和姓名相同就认为是同一个人
@Override
public boolean equals(Object obj) {
    //容错处理
    if (!(obj instanceof Person)) {
        throw new ClassCastException("类型转化异常");
    }

    //向下转型
    Person person = (Person)obj;
    return this.name.equals(person.name) && this.age == person.age;
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值