/**
* @author sunwc
* @create 2023-03-29 下午 03:20
*/
public class CollectionsTest {
@Test
public void testCollections() {
List list = new ArrayList();
list.add(353);
list.add(0);
list.add(4838);
list.add(43);
list.add(52);
list.add(-432);
list.add(9);
// 使用Collecitons.copy(),要先撐開dest collection 的長度 至 source 的 長度
// tips: 先讓裝載的元素一樣多
List dest = Arrays.asList(new Object[list.size()]);
// 再把值複製過來
Collections.copy(dest, list);
System.out.println(dest);
}
}
synchronizedXxx()
方法:該方法可使指定集合包裝成執行緒同步的集合,進而解決多執行緒併發存取集合時的執行緒不安全問題@Test
public void testCollections2() {
List list = new ArrayList();
list.add(353);
list.add(0);
list.add(4838);
list.add(43);
list.add(52);
list.add(-432);
list.add(9);
Collections.reverse(list);
System.out.println("reverse="+list);
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return -Integer.compare(o1,o2);
}
});
System.out.println("大到小="+list);
}
輸出結果:
reverse=[9, -432, 52, 43, 4838, 0, 353]
大到小=[4838, 353, 52, 43, 9, 0, -432]
/**
* @author sunwc
* @create 2023-03-29 下午 03:20
*/
public class CollectionsTest {
@Test
public void testCollections3() {
TreeSet<Student> treeSet = new TreeSet<>();
treeSet.add(new Student(1001, "Jack", 99));
treeSet.add(new Student(1002, "Hannah", 88));
treeSet.add(new Student(1003, "Lily", 45));
treeSet.add(new Student(1004, "Becky", 84));
treeSet.add(new Student(1005, "May", 60));
treeSet.add(new Student(1006, "Denial", 77));
treeSet.add(new Student(1007, "Vicent", 67));
treeSet.add(new Student(1008, "Potter", 56));
treeSet.add(new Student(1009, "Hank", 98));
Iterator<Student> iterator = treeSet.iterator();
int count = 0;
while (iterator.hasNext() && count <= 2) {
Student next = iterator.next();
System.out.println("學生姓名:"+next.getName()+", 學生成績:"+next.getScore());
count++;
}
}
}
class Student implements Comparable<Student> {
private int id;
private String name;
private int score;
public Student(int id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Student{");
sb.append("id=").append(id);
sb.append(", name='").append(name).append('\'');
sb.append(", score=").append(score);
sb.append('}');
return sb.toString();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id && score == student.score && Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, score);
}
/**
* 成績從高到低
* @param o
* @return
*/
@Override
public int compareTo(Student o) {
return -Integer.compare(this.getScore(), o.getScore());
}
}
輸出結果:
學生姓名:Jack, 學生成績:99
學生姓名:Hank, 學生成績:98
學生姓名:Hannah, 學生成績:88