java 编程思想 笔记_java编程思想笔记20170215

importjava.util.ArrayList;importjava.util.List;public classTest {public static voidmain(String[] args) {

List list = new ArrayList();

list.add("1");

list.add("2");

String[] tt=(String[]) list.toArray(new String[0]);

}

}

这段代码是没问题的,但我们看到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 extends Set

发现此接口也继承了Set接口。此接口中定义了如表13-7所示的方法。

表13-7  SortedSet接口中定义的方法

序号

方法

类型

描述

1

public Comparator

super E> comparator()

普通

返回与排序有关联的比较器

2

public E first()

普通

返回集合中的第一个元素

3

public SortedSet headset

(E toElement)

普通

返回从开始到指定元素的集合

4

public E last()

普通

返回最后一个元素

5

public SortedSet subSet

(E fromElement,E toElement)

普通

返回指定对象间的元素

6

public SortedSet tailSet

(E fromElement)

普通

从指定元素到最后

范例:验证SortedSet接口

package org.lxh.demo13.setdemo;

importjava.util.SortedSet;

importjava.util.TreeSet;

publicclassTreeSetDemo05 {

publicstaticvoidmain(String[] args) {

SortedSet allSet = newTreeSet();   // 为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中一些繁琐的装饰操作,简化了编程

7b8140ec71216f5f086534f96cae0e65.png

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对象的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值