JavaSE——集合

Collections类常用方法

// 把一个或多个元素添加到指定集合
Collections.addAll(list, 12,11,3,8,5,11,11,222,333);
// 找出最大的元素
System.out.println("max:" + Collections.max(list));
// 找出最小的元素
System.out.println("min:" + Collections.min(list));
// 排序, 默认升序,可用匿名内部类重写sort方法
Collections.sort(list);
// reverse 反转集合内的元素
Collections.reverse(list);
// 替换集合中所有 和指定的值相等元素 为 其他的值
Collections.replaceAll(list, 11, 666);
// 替换集合中两个位置的元素
Collections.swap(list, 1, 5);
// shuffle 随机排序
Collections.shuffle(list);
// 填充, 使用 指定的值 替换所有元素
Collections.fill(list, 1);
// 清空集合
list.clear();

集合转数组

// 把集合转为数组
// 默认为 Object类型的
Object[] array = list.toArray();
// 转成指定类型的数字, 需要传入对应类型的数组,数组不需有元素,但不能为 null
String[] arr = list.toArray( new String[]{} );
System.out.println(Arrays.toString(arr));

数组转List,迭代器的使用

// 可以把数组,转换为 List集合, 该List的 size 是不可变的
List<Integer> list = Arrays.asList(11, 8, 23, 43);		
// 使用 可以变长的集合存储 上述的元素
List<Integer> list2 = new ArrayList<>(list);
// 获取迭代器对象
Iterator<Integer> it = list2.iterator();
// hasNext 判断是否有下一个元素
while(it.hasNext()){
	// 有, 使用 next() 取这个元素
	Integer next = it.next();
	System.out.println(next);
}

LinkedList相关:特点:双向链式存储

LinkedList<String> list = new LinkedList<String>();
		
// addFirst 在头部添加
list.addFirst("11");
list.addLast("999");

// 查看 第一个/ 最后一个 元素
String first = list.getFirst();
String last = list.getLast();

// 删除并返回第一个元素
String removeFirst = list.removeFirst();
// 删除并返回最一个元素
String removeLast = list.removeLast();

HashMap(线程不安全)相关,用来存键值对(两个值),key不能重复

// 创建对象
HashMap<Integer, String> map = new HashMap<Integer, String>();
// 添加 一个键值对
map.put(1, "aa");

// 根据 key 取 value
String value = map.get(2);

// 根据 key 删除 对应的 value
String remove = map.remove(0);
System.out.println("0-remove:" + remove);

// 是否含有指定的 key
System.out.println("containsKey1:"+map.containsKey(666));
// 是否含有指定 value 
System.out.println("containsValue:"+map.containsValue("aa"));

// 是否为空集合
System.out.println("isEmpty:"+map.isEmpty());

遍历HashMap的三种方式

//通过keySet()获取所有key的集合,然后遍历所有的key
Set<Integer> keySet = map.keySet();
for (Integer key : keySet) {
	String val = map.get(key);
	System.out.println(key + "=" + val);
}
System.out.println("------------");
//通过values()获取所有value的集合,然后遍历所有的value
Collection<String> values = map.values();
for (String val : values) {
	System.out.println("val=" + val);
}
System.out.println("------------");
//通过entrySet()获取所有key-value的集合,然后遍历所有的key-value键值对
Set<Map.Entry<Integer,String>> entrySet = map.entrySet();
for (Map.Entry<Integer, String> entry : entrySet) {
	System.out.println(entry.getKey() + "=" + entry.getValue());
}

以单个结构存储元素,这类集合的超级父接口是Collection;
以键值对结构存储元素,这类集合的超级父接口是Map;
Collection下面有两个接口:List(内元素:有序、可重复、有下标),Set(无序、去重、无下标)
List下面有三个常用类:ArrayList,LinkedList,Vector
ArrayList:底层用的是数组的数据结构,非线程安全
LinkedList:底层用的是双向链表的数据结构
Vector:底层用的是数组的数据结构,线程安全

Set中,常用的两类又分为HashSet和TreeSet
HashSet集合在new对象的时候,其实底层new的是HashMap,放在K当中
HashMap:底层是哈希表
TreeSet:底层是TreeMap,new的时候,new的是TreeMap(二叉树,可排序)

Map接口有两个常用的实现类:HashMap,HashTable(线程安全,不常用),SortedMap(是个接口,该接口的实现类是TreeMap)。注意:Map接口没有实现迭代器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值