package fengkuangjava.collection;
import org.junit.Test;
import org.omg.CORBA.OBJ_ADAPTER;
import java.lang.annotation.Repeatable;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class CollectionTest {
/**
* 定義數組
*/
int[] arr = {1,2,4,2,7,3,8,2,3,4};
String[] newArr = new String[]{"aaa","bbb","ccc"};
String[] newArr2 = {"aaa","bbb","ccc"};
/**
* 數組Array轉集合List
*/
@org.junit.Test
public void arrayToList(){
//方法一: 使用Arrays工具類
System.out.println("使用Arrays.asList()方法");
List list = Arrays.asList(arr);
List<Object> listInt = Arrays.asList(arr);
List<String> listString = Arrays.asList(newArr);
//方法二:採用Java8新特性
System.out.println("使用Java8新特性方法");
List<Object> list2 = Stream.of(arr).collect(Collectors.toList());
System.out.println(list2);
}
/**
* 數組Array轉集合Set
* 不能保證順序
*/
@org.junit.Test
public void ArrayToList(){
//方法一:Arrays工具類
System.out.println("使用Arrays.asList()方法");
Set<Object> set2 = new HashSet<>(Arrays.asList(arr));
Set<String> setArr = new HashSet<>(Arrays.asList(newArr));
List list = Arrays.asList(arr);
List<String> listString = Arrays.asList(newArr);
Set set = new HashSet<>(list);
HashSet hashSet1 = new HashSet(list);
HashSet hashSet2 = new HashSet<>(list);
HashSet<String> hashSet3= new HashSet<>(list);
HashSet hashSet4 = new HashSet(listString);
HashSet hashSet5 = new HashSet<>(listString);
HashSet<String> hashSet6= new HashSet<>(listString);
//方法二:採用Java8新特性
System.out.println("使用Java8新特性方法");
Set<Object> set6 = Stream.of(newArr2).collect(Collectors.toSet());
System.out.println(set6);
}
/**
* 數組Array轉Map
*/
@Test
public void ArrayToMap(){
System.out.println("ArrayToMap");
Map<Object,Object> map = new HashMap<>();
int i = 1;
for(Object o : newArr){
map.put(i++,o);
}
System.out.println("HashMap的值:" + map);
}
/**
* List轉數組Array
*/
@org.junit.Test
public void ListToArray(){
System.out.println("ListToArray");
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList(newArr));
System.out.println("打印list;"+ list);
//方法一
String[] strings = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(strings));
//方法二:
System.out.println("使用Java8新特性");
String[] strings2 = list.stream().toArray(String[]::new);
System.out.println(Arrays.toString(strings2));
}
/**
* List轉爲Set
*/
@org.junit.Test
public void ListToSet(){
System.out.println("遍歷集合List,使用add方法或addAll方法");
Set<Object> set = new HashSet<>();
List<Object> list = new ArrayList<>(Arrays.asList(newArr2));
list.add("aaa");
//set.add(list);
System.out.println(set);
System.out.println("-----------");
for (Object i : list){
set.add(i);
}
set.add("bbb");
System.out.println( set.contains("bbb"));
System.out.println(set);
}
/**
* List轉Map
*/
@Test
public void ListToMap(){
System.out.println("ListToMap");
Map<Object,Object> map = new HashMap<>();
List<Object> list = new ArrayList<>();
list.add("上海");
list.add("安徽");
list.add("江蘇");
list.add("浙江");
//方法一
for(int i = 0;i<list.size();i++){
map.put(i,list.get(i));
}
System.out.println(map);
//方法二:Java8新特性
List<Book> bookList = new ArrayList<>();
bookList.add(new Book("平凡的世界",2004,"978702004845"));
bookList.add(new Book("戰爭與和平",1989,"9787020014071"));
bookList.add(new Book("百年孤獨",1775,"9787215069657"));
for(int i = 0; i< bookList.size();i++){
System.out.println(bookList.get(i).toString());
}
Map<String,Integer> map2 = bookList.stream().collect(Collectors.toMap(Book::getName,Book::getReleaseYear));
System.out.println(map2);
}
/**
* 集合Set轉爲數組Array
*/
@org.junit.Test
public void SetToArray(){
//方法一
System.out.println("使用Set集合自帶的toArray方法");
Set<Object> set = new HashSet<>();
set.addAll(Arrays.asList(newArr2));
Object[] objects = set.toArray(new Object[set.size()]);
System.out.println(Arrays.toString(objects));
//方法二:
System.out.println("使用Java8新特性");
String[] strings = set.stream().toArray(String[]::new);
System.out.println(Arrays.toString(strings));
}
/**
* Set轉List
*/
@org.junit.Test
public void SetToList(){
Set<Object> set = new HashSet<>(Arrays.asList(newArr));
List<Object> list = new ArrayList<>(set);
//或者直接聲明
List<Object> list2 = new ArrayList<>(new HashSet<>(Arrays.asList(newArr)));
System.out.println(list);
System.out.println(list2);
}
/**
* Set轉Map
*/
@Test
public void SetToMap(){
System.out.println("SetToMap");
Map<Object,Object> map = new HashMap<>();
Set<Object> set = new HashSet<>();
set.add("北京");
set.add("上海");
set.add("深圳");
set.add("廣州");
System.out.println(set);
Iterator iterator = set.iterator();
for(int i = 0;i<set.size();i++){
map.put(i,iterator.next());
}
System.out.println(map);
}
/**
* Map轉Array
*/
@Test
public void MapToArray(){
System.out.println("MapToArray");
Map<String,String> map = new HashMap<>();
map.put("上海","上海");
map.put("安徽","合肥");
map.put("浙江","杭州");
map.put("廣東","廣州");
map.put("北京","北京");
Object[][] strings = new Object[map.size()][2];
Iterator iterator = map.entrySet().iterator();
for(int i = 0; i < map.size(); i++){
Map.Entry entry = (Map.Entry) iterator.next();
strings[i][0] = entry.getKey();
strings[i][1] = entry.getValue();
}
for(Object[] objects : strings) {
for (Object object : objects) {
System.out.print(object + " ");
}
System.out.println();
}
}
/**
* Map轉List
*/
@Test
public void MapToList(){
System.out.println("MapToList");
Map<String,String> map = new HashMap<>();
map.put("上海","上海");
map.put("安徽","合肥");
map.put("浙江","杭州");
map.put("廣東","廣州");
map.put("北京","北京");
List<Object> objects = new ArrayList<>(map.keySet());
System.out.println(objects);
//list裏放list
List<List<Object>> list = new ArrayList<>();
for(Object o : map.keySet()){
List<Object> list2 = new ArrayList<>();
list2.add(o);
list2.add(map.get(o));
list.add(list2);
}
System.out.println(list);
}
/**
* Map轉Set
*/
@Test
public void MapToSet(){
System.out.println("MapToSet");
Map<String,String> map = new HashMap<>();
map.put("上海","上海");
map.put("安徽","合肥");
map.put("浙江","杭州");
map.put("廣東","廣州");
map.put("北京","北京");
Set<Object> objects = new HashSet<>(map.keySet());
System.out.println(objects);
}
//新建一個內部Book類用於Map測試
class Book{
private String name;
private Integer releaseYear;
private String isbn;
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", releaseYear=" + releaseYear +
", isbn='" + isbn + '\'' +
'}';
}
public Book(String name, Integer releaseYear, String isbn) {
this.name = name;
this.releaseYear = releaseYear;
this.isbn = isbn;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getReleaseYear() {
return releaseYear;
}
public void setReleaseYear(Integer releaseYear) {
this.releaseYear = releaseYear;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
}
}