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