Java jdk21新增的语法特性(三)
·
三、核心类库改进
431 Sequenced Collections 序列集合
序列集合通过引入3个接口来实现用一套统一的API记录元素在集合中出现的顺序,通过序列集合可以更方便地对的首尾元素进行操作,或者将集合中的元素进行反转。
JDK21之前,不同类型集合获取第一个元素的方案完全不一样

JDK21开始,提供了几个接口:
1)、SequencedCollection接口

2)、SequencedSet接口
3)、SequencedMap接口

集合之间实现关系如下所示:

案例应用:
1、SequencedCollection接口的实现,常用的一些方法
public static void main(String[] args) {
//集合对象
SequencedCollection<Integer> sequencedCollection = new ArrayList<>(Arrays.asList(10,15,25,35,45));
System.out.println("原集合:"+sequencedCollection);
System.out.println("反转后:"+sequencedCollection.reversed());
//添加元素到首尾
sequencedCollection.addFirst(1);
sequencedCollection.addLast(2);
System.out.println("添加元素后:"+sequencedCollection);
Integer first = sequencedCollection.getFirst();
Integer last = sequencedCollection.getLast();
System.out.println("首元素为:"+first+",尾元素为:"+last);
//移除首尾元素
Integer first1 = sequencedCollection.removeFirst();
System.out.println("移除首元素后:"+sequencedCollection);
System.out.println("移除的首元素为:"+first1);
Integer last1 = sequencedCollection.removeLast();
System.out.println("移除尾元素后:"+sequencedCollection);
System.out.println("移除的尾元素为:"+last1);
}

2、SequencedSet接口的实现,常用的一些方法
public class TestSequencedSet2 {
public static void main(String[] args) {
//创建有序集合
SequencedSet<Integer> sequencedSet = new LinkedHashSet<>();
//添加元素
sequencedSet.add(1);
sequencedSet.add(3);
sequencedSet.add(5);
System.out.println("原数据:"+sequencedSet);
//添加首尾元素
sequencedSet.addFirst(100);
sequencedSet.addLast(200);
System.out.println("添加首尾元素后:"+sequencedSet);
//反转集合
System.out.println("反转"+sequencedSet.reversed());
//获取首尾元素
Integer first = sequencedSet.getFirst();
System.out.println("首元素为:"+first);
Integer last = sequencedSet.getLast();
System.out.println("尾元素为:"+last);
//移除首尾元素
sequencedSet.removeFirst();
System.out.println("移除首元素后:"+sequencedSet);
sequencedSet.removeLast();
System.out.println("移除尾元素后:"+sequencedSet);
System.out.println("***********测试TreeSet**********");
SequencedSet<String> treeSet = new TreeSet<>();
treeSet.add("man");
treeSet.add("boy");
treeSet.add("girl");
treeSet.add("woman");
System.out.println("原数据:"+treeSet);
System.out.println("反转:"+treeSet.reversed());
System.out.println("首元素:"+treeSet.getFirst());
//注意:TreeSet没有实现SequencedSet接口,所以不支持addFirst和addLast方法,会抛出UnsupportedOperationException异常
}

3、SequencedMap接口的实现,常用的一些方法
public class TestSequencedMap3 {
public static void main(String[] args) {
//创建有序集合
SequencedMap<String,Object> map = new LinkedHashMap<>();
map.put("girl","Anna");
map.put("woman","young");
System.out.println("原数据:"+map);
//反转
SequencedMap<String,Object> reversed = map.reversed();
System.out.println("反转:"+reversed);
//添加首尾
map.putFirst("boy","Mike");
map.putLast("man","old");
System.out.println("添加后的数据:"+map);
//获取首尾元素Key
System.out.println("首元素:"+map.firstEntry().getKey());
System.out.println("尾元素:"+map.lastEntry().getKey());
//获取所有的keys集合
SequencedSet<String> keys=map.sequencedKeySet();
System.out.println("所有键:"+keys);
//获取所有的values集合
SequencedCollection values= map.sequencedValues();
System.out.println("所有值::"+values);
//返回首尾元素,并删除
System.out.println("第一个键值:"+ map.pollFirstEntry());
System.out.println("最后一个键值:"+ map.pollLastEntry());
System.out.println("删除后数据:"+map);
}
}

优点:Sequenced Collections是Java中的一个新特性,它提供了一种有序的集合实现,其具有高效性能、可扩展性等优点。
更多推荐



所有评论(0)