java基礎回顧之集合---List(深度演示)

在這裏插入圖片描述

package com.bjpowernode.demo01;

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

/**
 * List
 * 	爲每個元素指定了一個索引值, 增加了針對索引值的操作
 * @author Administrator
 *
 */
public class Test05 {

	public static void main(String[] args) {
		// 1) 創建List集合
		List<String> list = new ArrayList<>();
		//2) 添加元素
		list.add("jj");
		list.add("dd");
		list.add("mm");
		System.out.println( list ); 		//[jj, dd, mm]

		//3)在指定的位置添加元素, 注意,索引值取值範圍[0,list.size() ]
		list.add(0, "gg");
		System.out.println( list ); 		//[gg, jj, dd, mm]
		list.add(list.size(), "DD");
		System.out.println( list ); 		//[gg, jj, dd, mm, DD]

		//4)返回指定位置的元素, 修改指定位置的元素
		System.out.println( list.get(0));
		System.out.println( list.get(list.size()-1));   //最後的元素
		list.set(0, "GG");
		System.out.println( list ); 		//[GG, jj, dd, mm, DD]
		list.remove(0);			//刪除0索引的元素
		System.out.println( list ); 		//[jj, dd, mm, DD]
		
		//5)返回元素在集合中的索引值, 如果集合中不存在該元素,返回負數
		System.out.println( list.indexOf("dd"));  //第一次出現的索引值
		System.out.println( list.lastIndexOf("dd"));  //最後一次出現的索引值
		System.out.println( list.indexOf("xx"));
		System.out.println( list.lastIndexOf("oo"));
		
	}

}

package com.bjpowernode.demo01;

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

/**
 * List特有的操作
 * 		取子列表
 * 		ListIterator迭代
 * @author Administrator
 *
 */
public class Test06 {

	public static void main(String[] args) {
		// 1) 創建List集合
		List<String> list = new ArrayList<>();
		//2) 添加元素
		list.add("jj");
		list.add("dd");
		list.add("mm");
		list.add("mm");
		list.add("bb");
		System.out.println( list ); 		//[jj, dd, mm, mm, bb]
		
		//3) subList()方法返回的是List列表的一個視圖, 並沒有生成新的列表 
		List<String> subList = list.subList(0, 3);
		System.out.println( subList );  	//[jj, dd, mm]
		//對subList進行操作,實際上是對List列表操作
		subList.add(1, "XX");
		System.out.println( subList ); 		//[jj, XX, dd, mm]
		System.out.println( list ); 		//[jj, XX, dd, mm, mm, bb]

		//4) ListIterator迭代器,不僅可以向後迭代,還可以向前迭代,不僅可以刪除,還可以添加/修改
		ListIterator<String> listIterator = list.listIterator();
		while (listIterator.hasNext()) {
			String string =  listIterator.next();
			System.out.print( string + "\t" );
		}
		System.out.println();
		//jj	XX	dd	mm	mm	bb   
		//現在listIterator迭代器的遊標指向 最後一個元素的後面
		//可以向前迭代
		while( listIterator.hasPrevious() ){
			String previous = listIterator.previous();
			System.out.print( previous + "\t");
		}
		System.out.println();
		//迭代過程中,進行修改,添加,刪除
		while (listIterator.hasNext()) {
			String string = (String) listIterator.next();
			if ("mm".equals(string)) {
				listIterator.remove(); 		//迭代刪除
			}else if ("dd".equals(string)) {
				listIterator.set("DD"); 	//修改當前元素
			}else if ("jj".equals(string)) {
				listIterator.add("XO");		//在遊標的位置添加
			}
		}
		System.out.println( list ); //[jj,XO, XX, DD, bb]
	}

}

package com.bjpowernode.demo01;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
/**
 * 排序
 * @author Administrator
 *
 */
public class Test07 {

	public static void main(String[] args) {
		// 1) 創建List集合
		List<String> list = new ArrayList<>();
		//2) 添加元素
		list.add("jj");
		list.add("dd");
		list.add("mm");
		list.add("mm");
		list.add("bb");
		//3)打印的順序就是添加的順序
		System.out.println( list ); 		//[jj, dd, mm, mm, bb]

		//4)對集合中元素進行由小到大/由大到小排序
		//sort()方法參數是Comparator接口,在調用方法時,可以傳遞接口的匿名內部類對象
		//Comparator後面有個泛型 , 這個泛型指定比較對象的數據類型
		list.sort( new Comparator<String>() {
			//在匿名內部類體中重寫接口的抽象方法
			@Override
			public int compare(String o1, String o2) {
				// 指定排序規則,
//				return o1.compareTo(o2);		// 如按字符串升序
				return o2.compareTo(o1);		// 如按字符串降序
			}
			
		});
		
		System.out.println(list );
	}

}

package com.bjpowernode.demo01;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
 * List集合中存儲自定義類型的對象
 * 		可以根據對象的某個字段排序
 * 	注意:
 * 		List集合進行contains(Object)/ remove(Object)等方法時,需要調用對象的equals()方法 
 * 		要求自定義類需要重寫equals()
 * @author Administrator
 *
 */
public class Test08 {

	public static void main(String[] args) {
		// 創建List集合,存儲Student對象
		List<Student> list = new  ArrayList<>();
		
		//向集合中添加Student對象
		list.add( new Student("lisi", 18, 90));
		list.add( new Student("zhang", 28, 70));
		list.add( new Student("wang", 8, 80));
		list.add( new Student("feifei", 28, 99));
		//直接打印,按添加的順序輸出
		System.out.println( list );
		
		//把集合中Student對象根據年齡升序排序'
		list.sort(new Comparator<Student>() {
			//在匿名內部類中重寫接口的抽象方法 
			@Override
			public int compare(Student o1, Student o2) {
				//定義比較規則
				return  o1.age - o2.age ; 		//年齡升序
			}
		});
		System.out.println(list);
		
		//把集合中Student對象根據成績降序排序
		list.sort(new Comparator<Student>() {
			@Override
			public int compare(Student o1, Student o2) {
				return o2.score - o1.score; 	//成績降序
			}
		});
		System.out.println( list );
		
		//判斷是否包含某個對象
		Student dubin = new Student("dudu", 35, 100);
		list.add(dubin);
		System.out.println( list );
		System.out.println( list.contains(dubin)); 		//true
		
		Student wangfeifei = new Student("feifei", 28, 99);
		//List列表中contains(Object)/ remove(Object) 等方法, 需要列表中是否有這個對象
		//需要調用對象的equals()方法
		System.out.println( list.contains(wangfeifei));  	//
		list.remove(wangfeifei);
		System.out.println( list );
	}

}


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

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + score;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (score != other.score)
			return false;
		return true;
	}
	
}
package com.bjpowernode.demo01;

import java.util.ArrayList;
import java.util.Vector;

/**
 * ArrayList/Vector
 * 	1) 底層都是數組
 * 	2) ArrayList/Vector默認初始化大小: 10
 * 	3) ArrayList默認擴容: 1.5 倍, Vetor默認擴容: 2倍
 * 	4) Vector提供的操作,都使用synchronized修飾, 是線程安全的, ArrayList不是線程安全的
 * @author Administrator
 *
 */
public class Test09 {

	public static void main(String[] args) {
		// 
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("abc");
		arrayList.contains("abc");
		
		Vector<String> vector = new Vector<>();
		vector.add("hehe");
	}

}

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章