欢迎访问宙启技术站
智能推送

Java函数库中的集合和映射函数使用详解?

发布时间:2023-06-02 05:30:09

Java函数库中的集合和映射函数是开发人员在开发过程中可能会频繁使用的一部分。集合函数可以用于对集合中的元素进行常用的操作,例如排序、查找、过滤等。而映射函数则可以用于对映射中的键值对进行常用的操作,例如获取键、获取值、遍历等。本文将对Java函数库中的常用集合和映射函数进行详细说明。

集合函数

1. sort

sort函数可以对集合中的元素进行排序,排序方式可以根据元素的天然顺序(如数字从小到大、字母从A到Z等),也可以根据自定义规则,例如按照元素长度进行排序。sort函数需要传入一个实现了Comparator接口的比较器对象作为参数。示例如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

//按照元素长度进行排序
Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return o1.length() - o2.length();
    }
});

System.out.println(list);//输出:[apple, orange, banana]

2. reverse

reverse函数可以对集合中的元素进行倒序排列。示例如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

Collections.reverse(list);

System.out.println(list);//输出:[orange, banana, apple]

3. binarySearch

binarySearch函数可以在一个已排序的集合中查找指定元素的位置。该函数需要传入一个实现了Comparator接口的比较器对象作为参数。示例如下:

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(5);
list.add(7);
list.add(9);

//查找元素5的位置
int index = Collections.binarySearch(list, 5, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o1 - o2;
    }
});
System.out.println(index);//输出:2

4. shuffle

shuffle函数可以随机打乱集合中的元素顺序。示例如下:

List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
    list.add(i);
}

Collections.shuffle(list);

System.out.println(list);//输出:[5, 10, 9, 8, 4, 1, 3, 6, 2, 7](随机打乱顺序)

5. frequency

frequency函数可以统计集合中指定元素出现的次数。示例如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("apple");

int count = Collections.frequency(list, "apple");
System.out.println(count);//输出:2

6. disjoint

disjoint函数可以判断两个集合是否没有共同元素。示例如下:

List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("orange");

List<String> list2 = new ArrayList<>();
list2.add("pear");
list2.add("grape");

boolean isDisjoint = Collections.disjoint(list1, list2);
System.out.println(isDisjoint);//输出:true

7. addAll

addAll函数可以将多个元素添加到集合中。示例如下:

List<String> list = new ArrayList<>();
Collections.addAll(list, "apple", "banana", "orange");
System.out.println(list);//输出:[apple, banana, orange]

8. fill

fill函数可以将集合中的元素全部替换为指定元素。示例如下:

List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
    list.add(i);
}

Collections.fill(list, 0);

System.out.println(list);//输出:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0](元素全部替换为0)

9. indexOfSubList

indexOfSubList函数可以寻找子集合在集合中 次出现的位置。示例如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

List<String> sublist = new ArrayList<>();
sublist.add("banana");
sublist.add("orange");

int index = Collections.indexOfSubList(list, sublist);
System.out.println(index);//输出:1

映射函数

1. getOrDefault

getOrDefault函数可以获取映射中指定键的值,如果该键不存在,则返回指定的默认值。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

int value1 = map.getOrDefault("apple", 0);
int value2 = map.getOrDefault("orange", 0);

System.out.println(value1);//输出:1
System.out.println(value2);//输出:0

2. forEach

forEach函数可以遍历映射中的所有键值对。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

//使用Lambda表达式打印所有键值对
map.forEach((key, value) -> System.out.println(key + ": " + value));

3. keySet

keySet函数可以获取映射中所有的键。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

Set<String> keys = map.keySet();
System.out.println(keys);//输出:[apple, banana]

4. values

values函数可以获取映射中所有的值。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

Collection<Integer> values = map.values();
System.out.println(values);//输出:[1, 2]

5. entrySet

entrySet函数可以获取映射中所有的键值对。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

6. putIfAbsent

putIfAbsent函数可以向映射中添加指定键值对,如果该键已经存在,则不做任何操作。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

map.putIfAbsent("apple", 3);
map.putIfAbsent("orange", 4);

System.out.println(map);//输出:{orange=4, apple=1, banana=2}

7. remove

remove函数可以移除映射中指定键的键值对。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

map.remove("apple");

System.out.println(map);//输出:{banana=2}

8. replace

replace函数可以替换映射中指定键的值。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

map.replace("apple", 3);

System.out.println(map);//输出:{apple=3, banana=2}

9. replaceAll

replaceAll函数可以使用Lambda表达式替换映射中所有的值。示例如下:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);

map.replaceAll((key, value) -> value * 2);

System.out.println(map);//输出:{apple=2, banana=4}

综上所述,Java函数库中的集合和映射函数可以为开发人员提供丰富的操作方式,使得开发过程更加高效和便捷。开发人员可以根据具体的需求选择合适的函数使用。