从零开始学Java-Day15
Collection

package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
//本类用于测试collection相关API
public class TestCollection {
public static void main(String[] args) {
/*
<?>泛型中的类型只能是引用类型,不能是基本类型
*/
Collection<String> c = new ArrayList<String>();
c.add("黄金船");
c.add("小栗帽");
c.add("目白麦昆");
c.add("玉藻十字");
System.out.println(c);
// c.clear();
// System.out.println(c);
System.out.println(c.contains("黄金船"));//判断集合中是否存在此元素
System.out.println(c.isEmpty());//判断集合是否为空
System.out.println(c.hashCode());//获取集合的哈希码值
System.out.println(c.remove("目白麦昆"));//移除首次出现的该元素,删除成功返回true
System.out.println(c.size());//获取当前集合元素的个数
System.out.println(c.equals("小栗帽"));
Object[] array = c.toArray();
System.out.println(Arrays.toString(array));
System.out.println("========================");
Collection<String> c2 = new ArrayList();
c2.add("特别周");
c2.add("无声铃鹿");
c2.add("大和赤骥");
c.addAll(c2);
System.out.println(c);
System.out.println(c.containsAll(c2));//判断c集合中是否含有才中的所有元素
System.out.println(c.retainAll(c2));//取c与c2的交集
System.out.println(c);
/*
1.获取集合对应的迭代器 c.iterator()
2.判断当前是否有下个元素 it.hasNext()
3.获取当前迭代到的元素
*/
Iterator<String> it = c.iterator();
while (it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
List
有序的collection(也称为序列).此接口的用户可以对列表中的每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引(在列表中的位置)来访问元素,并搜索列表中的元素.
- 元素都有下标
- 数据是有序的
- 允许存放重复的元素
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//本类用于测试List接口
public class TestList {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("白雪");
list.add("智世");
list.add("尤娜");
list.add("漩涡玖辛奈");
list.add("夏娜");
list.add("牧濑红莉栖");
System.out.println("神乐");
System.out.println(list.contains("朽木露琪亚"));
System.out.println(list.hashCode());
System.out.println(list.remove("神乐"));
System.out.println(Arrays.toString(list.toArray()));
System.out.println(list.lastIndexOf("白雪"));
System.out.println("=========================");
list.add("神乐");
System.out.println(list);
list.add(0,"丸善斯基");
System.out.println(list);
System.out.println(list.get(5));
list.add(3,"尤娜");
System.out.println(list.indexOf("尤娜"));//显示第一次出现该元素的下标
System.out.println(list.lastIndexOf("尤娜"));//显示最后一次出现该元素的下标
System.out.println(list.remove(3));//根据下标删除元素
System.out.println(list.set(5,"五河琴里"));
System.out.println(list);
List<String> sublist = list.subList(2,6);
System.out.println(sublist);
System.out.println("=========================");
List<String> list2 = new ArrayList<String>();
list2.add("艾利斯");
list2.add("苏白");
list2.add("波风水门");
list2.add("五河士道");
System.out.println(list2);
System.out.println(sublist.addAll(list2));
System.out.println(sublist);
System.out.println(sublist.addAll(0,list2));
System.out.println(sublist);
System.out.println(sublist.removeAll(list2));//移除所有list2中的元素
System.out.println(sublist);
}
}
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
//进一步测试List接口
public class TestList02 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("米子哈");
list.add("黑沼爽子");
list.add("宫园熏");
list.add("玉子");
list.add("高木");
list.add("保橙心爱");
// Iterator<String> it = list.iterator();
// while (it.hasNext()){
// String s = it.next();
// System.out.print(s + " ");
// }
// for (String s : list) {
// System.out.print(s + " ");
// }
/*
ListIterator 是 Iterator 的子接口,拥有你想遍历的特有功能2
*/
ListIterator<String> it2 = list.listIterator();
while (it2.hasNext()){
String s = it2.next();
System.out.print(s + " ");
}
}
}
ArrayList
是一个集合,底层维护的是数组结构
大数据下
查询快,增删慢
package cn.tedu.collection;
import java.lang.reflect.Array;
import java.util.*;
//苯类用于List接口的子类ArrayList的测试
public class TestArrayList {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(200);
list.add(300);
list.add(400);
list.add(200);
System.out.println(list.contains(100));
System.out.println(list.indexOf(200));
System.out.println(list.lastIndexOf(200));
System.out.println(list.get(0));
System.out.println(list.remove(1));
System.out.println(list.remove(Integer.valueOf(300)));
System.out.println(list);
System.out.println(Arrays.toString(list.toArray()));
for (int i = 0; i < list.size(); i++){
System.out.print(list.get(i) + " ");
}
System.out.println("==============");
for (Integer i : list){
System.out.print(i + " ");
}
System.out.println("==============");
Iterator<Integer> it = list.iterator();
while (it.hasNext()){
Integer integer = it.next();
System.out.print(integer + " ");
}
System.out.println("==============");
ListIterator<Integer> it2 = list.listIterator();
while (it.hasNext()){
Integer integer = it.next();
System.out.print(integer + " ");
}
}
}
LinkedList
是一个集合,底层维护的是链表结构
大数据下
查询慢,增删快
package cn.tedu.collection;
import java.util.LinkedList;
//本类用测试LinkedList
public class TestLinkedList {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("玉子烧");
list.add("章鱼");
list.add("章鱼丸子");
list.add("炸鸡");
list.add("酸萝卜");
list.add("味增汤");
System.out.println(list);
list.addFirst("米饭");
list.addLast("天妇罗");
System.out.println(list);
System.out.println(list.removeFirst());
System.out.println(list.removeLast());
System.out.println(list);
LinkedList<String> list1 = new LinkedList<>();
list1.add("从零开始的异世界生活");
list1.add("从零开始");
list1.add("精灵使的剑舞");
list1.add("转生成蜘蛛");
list1.add("轻音少女");
System.out.println(list1);
//查询
System.out.println(list1.peek());//获取首元素
System.out.println(list1.peekFirst());
System.out.println(list1.peekLast());
System.out.println(list1);
//添加
System.out.println(list1.offer("龙族"));//在末尾添加元素
System.out.println(list1.offerFirst("我被绑架到贵族学院"));//在最前面加入元素
System.out.println(list1.offerLast("刀剑神域"));
System.out.println(list1);
//删除
System.out.println(list1.poll());//删除首元素,返回该元素
System.out.println(list1.pollFirst());
System.out.println(list1.pollLast());
System.out.println(list1);
}
}
Set
- 是一个不包含重复结构的Collection
- 集合内的数据是无序的
- 因为元素不可重复可以用来去重
package cn.tedu.collection;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
//苯类用于测试Set接口
public class TestSet {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("call me king");
set.add("EX");
System.out.println(set);
/*
1.set集合中元素是无序的
2.set集合中元素不可重复
3.set集合洞中可以存放null值 0-1个
*/
set.add("null");
set.add(null);
System.out.println(set);
//set.clear();
System.out.println(set.contains("EX"));
System.out.println(set.hashCode());
System.out.println(set.isEmpty());
System.out.println(set.remove(null));
System.out.println(set.size());
System.out.println(Arrays.toString(set.toArray()));
Set<String> set2 = new HashSet<>();
set2.add("fire");
set2.add("water");
set2.add("wood");
System.out.println(set.addAll(set2));
System.out.println(set);
//谁调用改变谁
System.out.println(set.containsAll(set2));
System.out.println(set.retainAll(set2));
System.out.println(set);
Iterator<String> it = set.iterator();
while (it.hasNext()){
String s = it.next();
System.out.print(s + " ");
}
}
}
Map
- 可以根据key获取对应的value
- key不允许重复,如果重复对应的value会被覆盖
- 无序
- 初始容量16,默认加载因子0.75
HashMap
数组加链表
package cn.tedu.collection;
import java.util.*;
//本类用于测试Map接口
public class TestMap {
public static void main(String[] args) {
//Map中的数据要符合映射规则,一定要同时指定KV的类型
Map<Integer,String> map = new HashMap<>();
map.put(12,"高木同学");
map.put(34,"西片");
map.put(46,"小千");
System.out.println(map);
/*
1.Map中存放的数据都是无序的
2.key值不能重复
3.如果重复此key对应的value会被覆盖
*/
System.out.println(map.containsKey(12));
System.out.println(map.containsValue("沙希同学"));
System.out.println(map.get(12));
System.out.println(map.remove(46));
System.out.println(map.size());
System.out.println(map.hashCode());
Collection<String> values = map.values();
System.out.println(values);
map.put(46,"小千");
System.out.println(map);
System.out.println(map.entrySet());
}
}
posted on 2021-06-21 19:47 无声specialweek 阅读(54) 评论(0) 收藏 举报
浙公网安备 33010602011771号