List接口的三种实现子类(ArrayList,Vector,LinkedList)

一:List

1:ArrayList  继承于 list   是有序可重复集合的子实现类

ArrayList有两种遍历方式,for方法和迭代器

public static void main(String[] args) {
		ArrayList<String> arr = new ArrayList<>();
		arr.add("hello");
		arr.add("java");
		arr.add("world");
		arr.add("array");
		Iterator it = arr.iterator();
		while (it.hasNext()) { // 迭代器遍历
			String str = (String) it.next();
			System.out.println(str);
		}
		System.out.println("------------");
		
		for (int x = 0; x < arr.size(); x++) {  //for循环遍历
			String str1 = (String) arr.get(x);
			System.out.println(str1);

		}
	}

2.Vector也是继承于 List 

Vector 和 ArrayList 的区别:

快速随机访问,使用ArrayList,线程不安全,不同步

如果涉及到堆,栈,队列等操作,考虑用Vector,线程安全,同步

public static void main(String[] args) {
		Vector v=new Vector();
		v.add("hello");
		v.add("java");
		v.add("world");
		Enumeration ele = v.elements();  //理解为Vector中的迭代器
	    while(ele.hasMoreElements()) {
	    	String s=(String) ele.nextElement();
	    	System.out.println(s);
	    }
	}


3. LinkedList也是继承于List的

/**
 * 特有功能:
 *	添加功能
 *		addFirst(Object e):将指定的元素插入到列表的开头
 *		addLast(object e):将指定的元素添加到列表末尾
 *	获取功能:
 *		getFirst():获取列表第一个元素
 *		getLast():获取列表第二个元素
 *
 *	删除功能
 *		public Object removeFirst()移除并返回此列表的第一个元素。 	
 *		public Object removeLast()
 *
 */
public class LinkedListExercise1 {
public static void main(String[] args) {
	//模拟先进后出
	LinkedList<String> list=new LinkedList<>();
	list.addFirst("123");
	list.addFirst("456");
	list.addFirst("789");
	Iterator it = list.iterator();
    while(it.hasNext()) {
    	String in=(String)it.next();
    	System.out.println(in);
    }
}

4.List中删减重复元素和重复对象的方法(不使用set中的集合)

a.删除重复元素

public static void main(String[] args) {
		ArrayList<Object> oldList = new ArrayList<Object>();
		oldList.add("a");
		oldList.add("b");
		oldList.add("b");
		oldList.add("c");
		oldList.add("d");
		oldList.add("e");
		oldList.add("f");
		oldList.add("a");
		oldList.add("d");
		oldList.add("e");
		ArrayList<Object> newList = new ArrayList<>();
		Iterator<Object> it = oldList.iterator();
		while (it.hasNext()) {         
			String str = (String) it.next();   //迭代器遍历元素且给str
			if (!newList.contains(str)) {      //判断新集合中是否含有该元素
				newList.add(str);              //如果有,将元素添加在新集合中
			}
		}
		Iterator<Object> it1 = newList.iterator();
		while (it1.hasNext()) {
			String str = (String) it1.next();
			System.out.println(str);

		}
	}
//集合删除重复对象
public class ArrayListDemo3 {
	public static void main(String[] args) {
		ArrayList<student> List = new ArrayList<>();
		student s1 = new student("张三", 18);
		student s2 = new student("张三", 18);
		student s3 = new student("李四", 16);
		student s4 = new student("王二麻子", 14);
		student s5 = new student("王二麻子", 14);
		List.add(s1);
		List.add(s2);
		List.add(s3);
		List.add(s4);
		List.add(s5);
		ArrayList<student> List2 = new ArrayList<>();
		Iterator<student> it = List.iterator();
		while (it.hasNext()) {
			student s = (student) it.next();
			//在if判断语句中,要在student中重写equals()方法,
			//因为contains()的底层原码是用equals()来做对比的
			//所以重写后才能实现对比,不然比较的是地址值,且全都不相等,则全输出
			if (!List2.contains(s)) {  
				List2.add(s);
			}
		}
		Iterator<student> it2 = List2.iterator();
		while (it2.hasNext()) {
			student ss =(student) it2.next();
			System.out.println(ss.getName()+ss.getAge());
		}
	}

b.删除重复对象



猜你喜欢

转载自blog.csdn.net/qq_41923771/article/details/80273213