黑马程序员-工具类Collections&Arrays

来源:互联网 发布:大数据咨询公司 编辑:程序博客网 时间:2024/05/21 18:46

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! -------

package it.heima.mylog;


import java.util.Properties;
import java.util.Set;

public class Collections_Arrays {
/**
* 知识点:集合的操作工具Collections类  && Arrays类

* Collections是对集合操作的工具类:

* 其实底层还就是利用集合对象的一些方法进行了包装,提供一些方法给使用者,便利快捷。
* 这些方法全是静态的。提到静态,回想起了静态方法和非静态方法的区别,静态方法是随着类的加载就加载进来了,而非静态方法需要
* 对象的创建才会被加载,也就是静态方法是不需要对象的支持就可以操作的。直接类名.方法名()就可以。所以
* 这样就不难理解静态方法不能调用非静态方法了,原因简单到不行,因为类的加载静态方法随之加载而没有对象
* 非静态方法是不会加载的,这样调用就会出问题,不严谨。
* 比如Collections中有对集合元素的排序啊,反转啊,线程同步啊,换位啊,获取最大值啊等等操作。 其中集合排序只支持List集合。

* Arrays也是集合框架的工具类:

* 如果数组中的元素是对象,那么转成集合是,直接将数组中的元素作为集合中的元素进行集合存储。
* 如果数组中的元素师基本类型数值,那么会将该数组作为集合中的元素进行存储。 重点:asList方法将数组转成集合。是数组和集合之间的桥梁。
* 好处:其实可以使用集合的方法操作数组中的元素。
* 注意:数组的长度是固定的,所以对于集合的增删方法是不可以使用的。否则发生UNsupportedOperation异常。 集合转数组呢???
* 使用Collection接口中的toArray方法。 集合转数组:可以对集合中的元素操作方法进行限定,不允许对其增删。
* toArray方法需要传入一个指定类型的数组。 长度该如何定义呢???简单到不行,集合的size。
* 但是,如果长度小于集合的size,那么该方法会创建一个同类型并和集合相同size的数组。
* 如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其他位子默认为null。
* 这样速度效率相对较低,最好是定义一个和集合size一样大小的数组来存储元素。资源合理化。

* foreach语句: 格式:for(类型 变量 : Collection集合 | 数组){ } 

* 传统for和高级for的区别? 

* 传统for可以完成对语句执行很多次,因为可以定义控制循环的增量条件。
* 高级for是一种简化形式。它必须有被遍历的对象,主要目标是数组,要么是Collection单列集合。
* 对数组的遍历如果仅仅是获取数组中的元素,就可以使用高级for。 如果要对数组的角标进行操作建议使用传统for。

* 可以使用高级for遍历map集合吗??? 
* 不可以,但可以将map转成单列的set集合,就可以使用了。 
* Map<Integer,String> map = new HashMap<Integer,String>(); 
* map.put( 3, "wangcai" ); map.put( 4,"hiahia" ); map.put( 5, "wangwu" ); map.put( 6, "zhangsan" ); 

* for(Integer key : map.keySet()){ 
* String value = map.get(key);
* System.out.println(key+":"+value);
* }
* 其中,keySet方法是获取Map集合中所有的键,装到Set集合中,Set集合是单列的,所以可以用高级for循环遍历。
* for(Map.Entry<Integer,String> me : map.entrySet()){ Integer key =
* me.getKey(); String value = me.getValue();
* System.out.println(key+":"+value); 
* }
* entrySet方法是获取Map集合中的键值对,将每一对键值对当作一个元素存储在Set集合中,再使用高级for循环遍历。
* Map集合中的嵌套类Map.Entry,为静态接口。 
* Iterator<String> it = list.iterator();
* while(it.hasNext()){ 
* System.out.println(it.next()); 
* }
* 集合的框架已经搞完了,接下来几天将是接触IO接口了,在这之前呢还有其他几个API对象需要掌握。
*/

/**
* 每日单词: 
* IDE integrated development environment 集成开发环境 IDE integrated
* development environment 集成开发环境

* API application programming interface 应用程序编程接口 API application
* programming interface 应用程序编程接口

* GUI graphics user interface 图形用户界面 GUI graphics user interface 图形用户界面
* graphics userinterface 图形用户界面 graphics user interface 图形用户假面

*/

/**
* 函数的可变参数: 其实就是一个数组,但是对接收的是数组的元素。 自动将这些元素封装成数组。简化了书写。
* 注意:可变参数类型,必须定义在参数列表的结尾。
* ...表示的其实就是数组的意思。
*/
public static void main(String[] args) {

int sum = newAdd(4, 5, 1, 7, 4, 9);
System.out.println(sum);

int sum1 = newAdd(2, 6, 9, 6, 3, 4, 0, 9);
System.out.println(sum1);

/**
 * System类常见方法:System类中d的方法和属性都是静态的。
 * long currentTimeMillis();获取当前时间的毫秒值。时间点以1970年1月1日08:00计算。
 * Properties类属于Hashtable的子类,实现Map接口。
 * Properties集合中存储的都是String类型的键和值,最好用它自己的存取方法来完成对元素的操作。
 */
TimeDemo();
PropertyDemo();
}

public static int newAdd(int a, int... arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}

public static void TimeDemo() {
long time = System.currentTimeMillis();
System.out.println(time);
}

public static void PropertyDemo() {
// Properties getProperties()确定当前系统的属性。
Properties prop = System.getProperties();
Set<String> nameSet = prop.stringPropertyNames();
for (String name : nameSet) {
String value = prop.getProperty(name);
System.out.println(name + "::" + value);
}
}

public static void MathDemo() {

// Math中有几个常用的方法:
Math.ceil(0); // 向上取整--ceil天花板
Math.floor(0); // 向下取整--floor地板
Math.round(0); // 四舍五入
Math.random(); // 随机产生一个伪随机流0到1
Math.pow(2, 3); // 返回a的b次幂
}

/**
* 周记: 简要回顾,主要是集合框架体系的了解,集合是一个装对象的容器,不同的集合 内部数据结构不同,其性质也不同, 单列集合:
* Collection位于集合框架的顶层,其下面有两个常用 的List,Set。
* List集合的特点有序,可以重复。其实现类Vector,ArrayList,LinkedList。
* Set集合的特点无序,不可重复,其实现类HashSet,LinkedHashSet,TreeSet 双列集合:
* Map的实现类HashMap,LinkedHashMap,TreeMap。 泛型技术: 符号:<>
* 泛型技术室一种安全机制,是给编译器使用的技术,是将程序运行期可能出现的错误或异常 提前,编译期都通不过。

* 每日单词:
* IDE intrgrated development environment 集成开发环境 API apllcation programming
* interface 应用程序编程接口 XX--->>application GUI graphics user interface 图形用户界面
* DBMS Data Base Management System 数据库管理系统 DBMS data base management system
* 数据库管理系统
*/

}

//------------------------------------------------------------------------------------------------------------------------------------------------2014年3月13日 22:11整理

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! -------

0 0
原创粉丝点击