当前位置:编程学堂 > 裕-JAVA集合(List、Set、Map)

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

  • 发布:2023-09-09 17:38

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<>(); //,语法称为泛型、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获得valueSystem.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"));

相关文章

最新资讯