裕-JAVA集合(List、Set、Map)

List:

List<String> list =  new ArrayList<>(); //List存放的数据允许重复的
list.add("aaa"); //添加
list.add(1, "ddd"); //插入
list.remove(1); //删除
list.set(3, "ddd"); //修改
System.out.println(list.size()); // 获得长度
/**
* 普通for循环
*   - 语法相对复杂,但是可以处理和下标相关的操作
* 
* 增强for循环
*   - 语法比较简单,一般处理和下标无关的操作
* 
* 迭代器: 基本不用
*/
// 遍历,方式1: 普通for循环:
for (int i = 0; i < list.size(); i++) {
	//获得指定下标的数据,list是有序的
	String str = list.get(i);
	System.out.println(str);
}
		
// 遍历方式2: 增强for循环
for (String str : list) {
	System.out.println(str);
}

// 遍历方式3:迭代器
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
	String str = iterator.next();
	System.out.println(str);
}

Set:

Set<String> set = new HashSet<>(); //<E>,语法称为泛型、Set集合的元素不能重复
set.add("aa"); //添加
set.remove("bb"); //删除
int size = set.size(); // 获得集合的长度

set.contains("aa"); //判断集合是否包含指定对象
set.clear(); //清空集合
System.out.println(set.isEmpty()); // 判断集合是否为空,即是有数据
Object[] array = set.toArray(); //集合转数组

/**
	遍历:
		方法1:增强for循环:
		方法2:迭代器:
	注意:hashSet是无序的
*/
for (String str : set) {
	System.out.println(str);
}

Iterator<String> iterator = set.iterator();//① 获得集合的迭代器: iterator()
while(iterator.hasNext()) { //② 循环遍历,判断是否有数据
	String str = iterator.next(); //③ 取出数据
	System.out.println(str);
}

/**
* 其他:
* ==:始终是判断内存地址是否一致
* hashCode():默认是返回内存地址的编码
* equals():默认也是判断内存地址是否一致
* 需要自定义,重写hashCode()和equals()
*/

Map:

/**
* 存放的是键值对 k-v
* key和value可以是引用类型,一般key都是String
* key的数据必须是惟一的,value可以重复
* Map是接口,有两个实现类: HashMap,TreeMap
*
* 用法: 添加、删除、修改、查询(所有的操作都是key相关)
* 添加: put(key, value)
* 修改: put(key, value)
* 删除: remove(key);
* 查询:
* entrySet -> entry.getKey(), entry.getValue()
* keySet -> key, map.get(key)
*/


Map<Integer, String> gjs = new HashMap<>(); //创建map集合
gjs.put(2006, "中国"); //添加数据	
gjs.put(2006, "意大利");//修改数据: 如果key不存在,则添加。如果存在,则修改
gjs.remove(2014); //删除

//遍历:
//方法1:推荐, 获得Entry的实例对象Set集合,然后Entry获得key和value
Set<Entry<Integer, String>> entrySet = gjs.entrySet();
for (Entry<Integer, String> entry : entrySet) {
	Integer key = entry.getKey();
	String value = entry.getValue();
	System.out.println(key + " : " + value);
}

//遍历
//方法2: 获得key的set集合,然后通过key获得value
Set<Integer> keySet = gjs.keySet(); //获得key的set集合
for (Integer key : keySet) {
	String value = gjs.get(key); //根据key获得value
	System.out.println(key + " -- " + value);
}

集合:

集合和数组的区别:

集合存放的数据是引用类型,长度是可变
数组存放的数据是任意类型,长度是固定

体系:

Collection:存放单一对象
	- Set  : 不能重复,无下标
    	-- HashSet:基于哈希码散列存放
        -- TreeSet:基于二叉树存放,去重
    - List : 可以重复,有下标
        -- ArrayList: 基于数组存放,线程不安全	优点查询快,缺点删除、插入慢
        -- LinkedList:基于双向链表存放的		优点删除/插入快,缺点是查询慢
        -- Vector:基于数组存放,线程安全
   - Map: 存放键值对

   - Iterator:迭代器,用于遍历Collection集合
   - 比较器:Comparable、Comparator,用来制定排序规则
   - 工具集: Collections

Collections

/**
*	Collection集合的工具集
*/
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");

//二分法查找
int index = Collections.binarySearch(list, "ccc");
System.out.println(index);//① 如果找不到返回负数  ②只能适合有序数组

//求最大和最小
System.out.println(Collections.max(list));
System.out.println(Collections.min(list));

//统计元素出现的次数
System.out.println(Collections.frequency(list, "aaa"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值