这段代码是没问题的,但我们看到String[] tt =(String[]) list.toArray(new String[0]) 中的参数很奇怪,然而去掉这个参数new String[0]却在运行时报错。。。
list.toArray()返回的是一个Object[]类型的,按理说,该容器中的元素已经用泛型限制了,那里面的元素就应该被当作泛型类型的来看了,然而在目前的java中却不是的,当直接String[] tt =(String[]) list.toArray()时,运行报错。原因是容器的类型已经强制转过来了,然而容器中的元素类型却没有转过来,所以运行时报错。
这是在看代码(ListFeatures.java)拥有的一个疑问:
Pet[] pa = pets.toArray(new Pet[0]);
new Pet[0]仅仅就是一个类型提示的作用吧
另外, subList()所产生的列表的幕后就是初始列表,因此,对所返回的列表的修改都会反映到初始列表中,反之亦然。
例如,改变subList()返回列表的顺序,原始列表相应部分的顺序也改变了
SortedSet接口
从TreeSet类的定义中可以发现,TreeSet中实现了SortedSet接口,此接口主要用于排序操作,即实现此接口的子类都属于排序的子类。SortedSet接口定义如下:
public interface SortedSet<E> extends Set<E>发现此接口也继承了Set接口。此接口中定义了如表13-7所示的方法。
表13-7 SortedSet接口中定义的方法
序号
方 法
类型
描 述
1
public Comparator<?
super E> comparator()
普通
返回与排序有关联的比较器
2
public E first()
普通
返回集合中的第一个元素
3
public SortedSet<E> headset
(E toElement)
普通
返回从开始到指定元素的集合
4
public E last()
普通
返回最后一个元素
5
public SortedSet<E> subSet
(E fromElement,E toElement)
普通
返回指定对象间的元素
6
public SortedSet<E> tailSet
(E fromElement)
普通
从指定元素到最后
范例:验证SortedSet接口
package org.lxh.demo13.setdemo; import java.util.SortedSet; import java.util.TreeSet; public class TreeSetDemo05 { public static void main(String[] args) { SortedSet<String> allSet = new TreeSet<String>(); // 为SortedSet 实例化 allSet.add("A"); // 增加元素 allSet.add("B"); // 增加元素 allSet.add("C"); // 增加元素 allSet.add("C"); // 重复元素,不能 加入 allSet.add("C"); // 重复元素,不能加入 allSet.add("D"); // 增加元素 allSet.add("E"); // 增加元素 System.out.println("第一个元素:" + allSet.first()); System.out.println("最后一个元素:" + allSet.last()); System.out.println("headSet元素:" + allSet.headSet("C")); System.out.println("tailSet元素:" + allSet.tailSet("C")); System.out.println("subSet元素:" + allSet.subSet("B","D")); } }程序运行结果:
第一个元素:A 最后一个元素:E headSet元素:[A, B] tailSet元素:[C, D, E] subSet元素:[B, C]
net.mindview.util包下的 文件读写工具类TextFile.java
//使用此工具类可以快速的实现读取文件内容到string,并封装到ArrayList中;进行一系列的操作之后,可以再讲内容写入到文件中。//使用此工具可以避免JavaIO中一些繁琐的装饰操作,简化了编程
String s1 = "how are you"; String s2 = "how are you"; String s3 = new String("how are you"); String s4 = new String("how are you"); System.out.println(s1 == s2); //true System.out.println(s3 == s4); //false
String s1 = "java"; String s2 = "java"; System.out.println(s1==s2); //true System.out.println(s1.equals(s2)); //true
如果String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。
如果String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。
转载于:https://www.cnblogs.com/919czzl/p/6401165.html