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;
}
}