常用API(笔记22)

常用API

一、增强for

public static void main(String[] args) {
Set <String>set =new HashSet<String>();
set.add("70");
set.add("40");
set.add("80");
set.add("50");
/* Iterator<String> it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}*/
for(String s:  set){
s="90";  //这个操作,不会影响到原来的集合中的数据
System.out.println(s);
}
}

它也可以对数组进行遍历
int [] x={2,4,6};
for(int i=0;i<x.length;i++){
System.out.println(x[i]);
}
和下面的等价
for(int n : x){
System.out.println(n);
}

//例子,使用增强for 遍历 map集合
for(Map.Entry<String, String> item : map.entrySet()){
System.out.println(item.getKey()+":"+item.getValue());
}

二、Collections类

专门用来操作 Collection集合的,里面的方法都是静态的
//例一 对list集合进行排序 (自然顺序)
static void sortDemo(){
List<String> list=new ArrayList<String>();
list.add("b");
list.add("a");
list.add("a");
list.add("a");
list.add("a");
list.add("c");
list.add("f");
list.add("e");
Collections.sort(list);
for(String s:list){
System.out.println(s);
}
}

//例二 上例如果想倒序,怎么处理? 可以将比较器翻转再传进去
Collections.sort(list, Collections.reverseOrder()); 

//例三 对上例,按字符串长度进行排序,使用自定义比较器
Collections.sort(list,new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.length()-o2.length();   //因为是list集合中的数据,所以不用担心去重复的问题
}
}); 

//例四 求集合中的最大值
max(Collection<? extends T> coll) 
max(Collection<? extends T> coll, Comparator<? super T> comp)  //可以传自定义比较器
public class Test {
public static void main(String[] args) {
List<Person> list=new ArrayList<Person>();
list.add(new Person(20, "学生一"));
list.add(new Person(90, "学生二"));
list.add(new Person(50, "学生三"));
list.add(new Person(30, "学生四"));
Person p= Collections.max(list);
System.out.println(p);
}
}

class Person implements Comparable<Person> {
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
Person(int age,String name){
this.age=age;
this.name=name;
}
int age;
String name;
public int compareTo(Person o) {
return this.age-o.age;
}
}

//例五 查找
static void searchDemo(){
List<String> list = new ArrayList<String>();
list.add("b");
list.add("c");
list.add("f");
list.add("a");
list.add("d");
list.add("e");
Collections.sort(list);  //二分查询之前,一定要排序
int index=Collections.binarySearch(list, "c");  //返回内容所在位置的索引
System.out.println(index);
}

//例六,填充
List<String> list = new ArrayList<String>();
list.add("b");
list.add("c");
list.add("f");
Collections.fill(list, "bad");
System.out.println(list); //[bad, bad, bad]

//例七替换
List<String> list = new ArrayList<String>();
list.add("b");
list.add("c");
list.add("f");
list.add("f");
Collections.replaceAll(list, "f", "嗷");
System.out.println(list); //[b, c, 嗷, 嗷]

//洗牌
static void shuffdemo(){
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
Collections.shuffle(list);
System.out.println(list);
}

小练习 随机生成 1=100 之间的100个随机数, 顺序打乱
List <Integer> list=new ArrayList<Integer>();
for(int i=0;i<100;i++){
list.add(i);
}
Collections.shuffle(list);
System.out.println(list);

三、Arrays类

主要用来对数组进行操作,全是由静态方法组成
--Arrays.sort();
--Arrays.binarySearch(...)  //二分查找
--Arrays.copyOf() //数组的复制
--Arrays.fill() //添充
--Arrays.asList(T... a) //数组转成集合
    
//例子,数组转集合
public static void main(String[] args) {
String [] array={"001","002","009"};
List<String> list=Arrays.asList(array);  //把数组转成集合
list.add("新数据");  //UnsupportedOperationException 严重注意,对于用asList转出来的集合,不要进行添加,删除类操作
list.add("新数据");
test(list);
}
static void test(List <?>list){
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}

//例子 集合转数组
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("a");
list.add("a");
list.add("x");
list.add("a");
list.add("sssa");
String []  array=new String [list.size()];
list.toArray(array);
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}

四、System 类

它是用 final 声明的  ,这个类不能被实例化
-- static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
-- static void exit(int status) //退出系统
-- static void gc()  //唤起垃圾回收器
-- static long currentTimeMillis() //取得当前时间,毫秒为单位
-- static Map<String,String> getenv()  //得当前环境相关的信息(得到所有的环境变量)
-- static String getenv(String name);  //根据环境变量的名称,得到环境变量的值

//例子 根据环境变量的名称,取得某个环境变量的值
String result=System.getenv("path");

//例子 取出所有的环境变量
Map<String,String> map= System.getenv();
for(Map.Entry<String, String> item: map.entrySet()){
System.out.println(item.getKey()+":"+item.getValue());
}
--static String setProperty(String key, String value)  //设定系统属性
--static String  getProperty(String key) //得到系统属性 
--static Properties getProperties()  //得到所有的系统属性
Properties 集合 继承自 HashTable 
表示了一个持久的属性集。Properties 可保存在流中或从流中加载。
属性列表中每个键及其对应值都是一个字符串
         
//例子 取得所有的系统属性
Properties prop = System.getProperties();
Set<Object> set = prop.keySet();
for (Object key : set) {
System.out.println(key+"    :   "+prop.get(key));
}   

五、Runtime类

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
可以通过 getRuntime 方法获取当前运行时。 
Runtime 代表当前虚拟机进程, 不能 new 
 
//例子,打开画图程序,5秒后关闭
Runtime r= Runtime.getRuntime(); 
Process p= r.exec("mspaint.exe c:\\chick.bmp");  
System.out.println("请看我画的小鸡,5秒");
Thread.sleep(5000);  //线程停止5秒
p.destroy();

六、Date 和 SimpleDateFormat

//例一 
Date d=new Date();  //得到当前日期所对应的Date对象
System.out.println(d);  //Tue Apr 19 14:21:22 CST 2016
注意:这个Date 是java.util下的,不是java.sql下的
  
//例二 把日期按自定义的格式进行格式化输出
Date d=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss");
String str= df.format( d) ;
System.out.println(str);  //2016-04-19 星期二 02:25:39

//例三 把字符串转成日期格式
String str="2016-04-19";
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Date d= df.parse(str);  //把字符串,转成日期
如果格式串和目标串不匹配,发生 Unparseable date: "2016-04-19" 异常
  

猜你喜欢

转载自blog.csdn.net/weixin_41205479/article/details/80222936