集合中的其它方法

package javaStudy;

/**
 * 
 * @author zhaocx1
 * 
 */
import java.util.ArrayList;//导入集合中的类包
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
 * 高级for循环
 * 格式:
 * for(数据类型   变量名:被遍历的集合(Collection)或者数组)
 * {}
 * 对集合进行遍历。
 * 只能获取元素,不能对集合进行操作。
 *
 * 迭代器除了遍历,还可以进行remove集合中元素的动作。
 * 如果使用ListIterator,还可以在遍历过程中进行对集合进行增删改查的动作。
 *
 * 传统for和高级for有什么区别呢?
 * 高级for有一个局限性:必须有被遍历的目标。
 *
 * 建议:
 * 在遍历数组的时候,还是希望用传统for,因为传统for可以去角标。
 */
public class StrongForDemo {
	public static void main(String[] args) {
		// //定义一个集合容器用于存储集合,并指定泛型为字符串类型
		ArrayList<String> a1 = new ArrayList<String>();
		// 添加元素
		a1.add("abc1");
		a1.add("abc2");
		a1.add("abc3");
		// 增强for循环,对集合中的元素进行遍历
		for (String s : a1) {
			// s="kk";
			System.out.println(s);
		}
		// 输出打印集合中的元素
		System.out.println(a1);

		// 用迭代器取出集合中的元素
		/*
		 * Iterator<String> it=a1.iterator();while(it.hasNext())
		 * {System.out.println(it.next());}
		 */
		// 定义一个数组,取出数组中的元素
		int[] arr = { 3, 5, 1 };
		for (int i : arr) {
			System.out.println("i:" + i);
		}
		//定义一个集合容器用于存储集合,并指定泛型为字符串类型
		HashMap<Integer, String> hm = new HashMap<Integer, String>();
		
		// 添加元素
		hm.put(1, "a");
		hm.put(2, "b");
		hm.put(3, "c");
		// 增强for循环,用Map集合中的keySet方法对集合中的元素进行遍历
		Set<Integer> keySet = hm.keySet();
		for (Integer k : keySet) {
			System.out.println(k + "::" + hm.get(k));
		}
		// 增强for循环,用Map集合中的Map.Entry方法对集合中的元素进行遍历
		for (Map.Entry<Integer, String> me : hm.entrySet()) {
			System.out.println(me.getKey() + "......" + me.getValue());
		}

	}

}
package javaStudy;

import java.util.ArrayList;//导入集合中的类包
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * 集合框架的工具类。 Collections:集合框架的工具类。里面定义的都是静态方法。
 * 
 * Collections和Collection有什么区别? Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
 * 它有两个常用的子接口, List:对元素都有定义索引。有序的。可以重复元素。 Set:不可以重复元素。无序。
 * 
 * Collections是集合框架中的一个工具类。该类中的方法都是静态的 提供的方法中有可以对list集合进行排序,二分查找等方法。
 * 通常常用的集合都是线程不安全的。因为要提高效率。 如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
 */
// 定义一个类实现一个比较器接口
class StrLenComparator implements Comparator<String> {
	// 覆写比较器中的compare方法,并以字符串类型作为参数
	public int compare(String s1, String s2) {
		// 对两个字符串长度进行比较
		if (s1.length() > s2.length())
			return 1;
		if (s1.length() < s2.length())
			return -1;
		return s1.compareTo(s2);
	}

}

public class CollectionsDemo1 {
	public static void main(String[] args) {
		 //sortDemo();
		 maxDemo();
	}

	public static void maxDemo() {
		//定义一个集合容器用于存储集合,并指定泛型为字符串类型
	   List<String> list = new ArrayList<String>();
	    //添加元素
		list.add("abcd");
		list.add("aaa");
		list.add("zz");
		list.add("kkkkk");
		list.add("qq");
		list.add("z");
		//对集合中的元素进行排序
		Collections.sort(list);
		//打印集合中的元素
		sop(list);
		//获取集合中的最大值
		String max = Collections.max(list/* ,new StrLenComparator() */);
		//打印集合中的最大值
		sop("max=" + max);
	}

	public static void sortDemo() {
		//定义一个集合容器用于存储集合,并指定泛型为字符串类型
		List<String> list = new ArrayList<String>();
		//添加元素
		list.add("abcd");
		list.add("aaa");
		list.add("z");
		list.add("kkkk");
		list.add("qq");
		list.add("z");
		//打印操作前集合中的元素
		sop(list);
       //集合工具类中通过sort进行排序
		Collections.sort(list,new StrLenComparator());
		// Collections.sort(list);
		//打印操作后集合中的元素
		sop(list);

	}

	public static void sop(Object obj) {//定义一个静态打印方法,接受的参数类型为Object类
		System.out.println(obj);
	}

}
package javaStudy;

import java.util.ArrayList;//导入集合中的类包
import java.util.Collections;
import java.util.List;

/**
 * 
 * @author zhaocx1
 * 练习:通过这般查找的方式找出某个元素在集合中的角标位置
 */

public class BinarysearchDemo {
	public static void main(String[] args) {
		binarySearchDemo();//调用静态方法
	}

	public static void binarySearchDemo() {//定义一个静态方法
		//定义一个集合容器用于存储集合,并指定泛型为字符串类型
		List<String> list = new ArrayList<String>();
		//添加元素
		list.add("abcd");
		list.add("aaa");
		list.add("z");
		list.add("kkkk");
		list.add("qq");
		list.add("z");
		//对集合中的元素进行排序
		Collections.sort(list);
		//打印集合中的元素
		sop(list);
        //通过这般查找方法找出某一元素在集合中的角标位置
		int index = Collections.binarySearch(list, "qq");
		//打印角标位置
		sop("index:" + index);

	}

	public static void sop(Object obj) {//定义一个静态打印方法,接受的参数类型为Object类
		System.out.println(obj);
	}
}
/*
 * class StrLenComparator2 implements Comparator<String> { public int
 * compare(String s1,String s2) { if (s1.length() > s2.length()) return 1; if
 * (s1.length() < s2.length()) return -1; return s1.compareTo(s2); } }
 */
package javaStudy;

import java.util.Arrays;//导入集合中的包类
import java.util.List;

/**
 * 
 * @author zhaocx1
 * 练习:通过这般查找的方式找出某个元素在集合中的角标位置
 */
/*
 * Arrays:用于操作数组的工具类。
 * 里面都是静态的方法。
 * 
 * asList:将数据变成list集合。
 */

class ArraysDemo {
	public static void main(String[] str) {
		// int[] arr={2,4,5};
		// System.out.println(Arrays.toString(arr));

		//定义一个字符串数组
		String[] arr = { "abc", "cc", "kkk" };
		// 把数组变成list集合有什么好处?
		// 可以使用集合的思想和方法来操作数组中的元素。
		// 注意:将数据变成集合,不可以使用集合的增删方法。
		// 因为数据的长度是固定的。
		// contains get indexOf(); subList();
		// 如果增删,那么会出现不支持操作异常。
		
		//通过Arrays工具类中的aslist方法将数组变成集合
		List<String> list = Arrays.asList(arr);
        // 判断是否包含某一个元素
		sop("contains:" + list.contains("cc"));

		// list.add("qq");//UnsupportedOperationException, 不支持的异常。
        //打印集合中的元素
		sop(list);

		int[] nums = { 2, 4, 5 };
		//Integer nums={2,4,5};
		List<int[] /* Integer */> li = Arrays.asList(nums);
		/*
		 * 如果数组中的元素都是对象,那么变成集合时,数据中的元素就直接转成集合中的元素。
		 * 如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
		 */

		sop(li);
	}

	public static boolean myContains(String[] arr, String key) {
		for (int x = 0; x < arr.length; x++) {
			if (arr[x].equals(key))
				return true;
		}
		return false;
	}

	public static void sop(Object obj) {
		System.out.println(obj);
	}

}
package javaStudy;

/**
 * 
 * @author zhaocx1
 * 
 */
import java.util.ArrayList;//导入集合包中的类包
import java.util.Collections;
import java.util.List;

public class FillDemo {
	public static void main(String[] args) {
		replaceAllDemo();// 调用静态方法
	}

	// 定义一个静态方法
	public static void replaceAllDemo() {
		// 定义一个集合容器用于存储集合,并指定泛型为字符串类型
		List<String> list = new ArrayList<String>();
		// 添加元素
		list.add("abcd");
		list.add("aaa");
		list.add("z");
		list.add("kkkk");
		// 打印操作前集合中的元素
		sop(list);
		// 对集合中的元素进行替换
		Collections.replaceAll(list, "aaa", "qq");
		// 打印操作后集合中的元素
		sop(list);
		// 对集合进行反转
		Collections.reverse(list);
		// 打印操作后集合中的元素
		sop(list);
	}

	/*
	 * fill方法可以将集合中所有元素替换成指定元素。
	 * 
	 * 练习: 将list集合中部分元素替换中指定元素。
	 */
	// 定义一个静态方法
	public static void fillDemo() {
		// 定义一个集合容器用于存储集合,并指定泛型为字符串类型
		List<String> list = new ArrayList<String>();
		// 添加元素
		list.add("abcd");
		list.add("aaa");
		list.add("z");
		list.add("kkkk");
		// 打印操作前集合中的元素
		sop(list);
		// 将集合中的元素全部替换成pp
		Collections.fill(list, "pp");
		// 打印操作后集合中的元素
		sop(list);
	}

	public static void sop(Object obj) {// 定义一个静态打印方法,接受的参数类型为Object类
		System.out.println(obj);
	}

}
package javaStudy;

/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * JDK1.5版本出现的新特性。 方法的可变参数。 在使用时注意:可变参数一定要定义在参数列表最后面。
 */

class ParamMethodDemo {
	public static void main(String[] args) {
		// show(3,4);
		/*
		 * //虽然少定义了多个方法。 但是每次都要定义一个数组。作为实际参数。
		 * 
		 * int[] arr = {3,4}; show(arr);
		 * 
		 * int[] arr1 = {2,3,4,5}; show(arr1);
		 */

		/*
		 * 可变参数。 其实就是上一种数组参数的简写形式。 不用每一次都手动的建立数组对象。 只要将要操作的元素作为参数传递即可。
		 * 隐式将这些参数封装成了数组。
		 */
		show("haha", 2, 3, 4, 5, 6);
		// show(2,3,4,5,6,4,2,35,9,"heh");

	}

	public static void show(String str, int... arr) {
		System.out.println(arr.length);
	}

	/*
	 * public static void show(int a,int b) { System.out.println(a+","+b); }
	 * public static void show(int a,int b,int c) {}
	 */
}
package javaStudy;
/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * StaticImport 静态导入
 * 当类名重名时,需要指定具体的包名。
 * 当方法重名时,指定具备所属的对象或者类。
 */
import static java.lang.System.out;//导入了System中所有静态成员。
import static java.util.Arrays.binarySearch;
import static java.util.Arrays.sort;//导入的是Arrays这个类中的所有静态成员。
import static java.util.Collections.sort;

import java.util.ArrayList;
import java.util.Arrays;//导入集合包中的类包

//packa/Demo.class
//packb/Demo.class
//import packa.*;
//import packb.*;
class  StaticImportDemo //extends Object
{
	public static void main(String[] args) 
	{
       //输出打印内容
		out.println("haha");
		//声明一个整形数组
		int[] arr = {3,1,5};
		//对数组中的元素进行排序
		sort(arr);
		//通过这般查找某一个元素的角标位置
		int index = binarySearch(arr,1);
		//打印角标
		System.out.println("Index="+index);
		//将数组转化成字符串
		out.println("..."+Arrays.toString(arr));
		//定义一个集合容器用于存储集合,
		ArrayList al = new ArrayList();
		//添加元素
		al.add(1);
		al.add(3);
		al.add(2);
        //打印操作前的集合中的元素
		out.println(al);
		//对集合中的元素进行排序
		sort(al);
		//打印操作后的集合中的元素
		out.println(al);
	}
}
package javaStudy;

import java.util.ArrayList;//导入集合包中的类包
import java.util.Arrays;

/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * 集合变成数据。
 */

public class CollectionChangeToArray {
	public static void main(String[] args) {
		//定义一个集合容器用于存储集合,
		ArrayList<String> a1 = new ArrayList<String>();
		//添加元素
		a1.add("abc1");
		a1.add("abc2");
		a1.add("abc3");

		/*
		 * 1.指定类型的数组到底定义多长呢? 当指定类型的数组长度小于集合的size,那么该方法内会创建一个新的数组。长度为集合的size.
		 * 当指定类型的数组长度大于集合的size,就不会新创建数组,而是使用传递进来的数组。
		 * 
		 * 所以创建一个刚刚好的数组最优。
		 * 
		 * 2.为什么要将集合变数组? 为了限定对元素的操作,不需要进行增删了。
		 */
        //将集合编程数组
		String[] arr = a1.toArray(new String[a1.size()]);
		System.out.println(Arrays.toString(arr));

	}

}
package Java学习;
/**
 * 
 * @author zhaocx1
 * 
 */
import java.text.SimpleDateFormat;//导入text包中的类包
import java.util.Date;//导入集合中的类包


public class DateDemo {
	public static void main(String[] args)
	{
		Date d=new Date();
		System.out.println(d);//打印的时间看不懂,希望有些格式。
		
		//将模式封装到SimpleDateformat对象中。
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月d日  E hh:mm:ss");
		
		//调用format方法让模式格式化指定Date对象。
		String time=sdf.format(d);
		//输出打印内容		
		System.out.println("time="+time);
	}
 
}
package JavaStudy;
/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * System:类中的方法和属性都是静态的。
 * out:标准输出,默认是控制台。
 * in:标准输入,默认是键盘。
 * 
 * 描述系统一些信息。
 * 获取系统 属性信息:Properties getProperties();
 * 
 */
import java.util.Properties;//导入集合包中的类包

public class SystemDemo {
	public static void main(String[] args)
	{
		Properties prop=System.getProperties();
		//因为Properties是Hashtable的子类,也就是Map集合中的一个子类对象。
		//那么可以通过Map的方法取出该集合中的元素。
		//该集合中存储的都是字符串,没有泛型定义。
		
		
		//如何在系统中自定义一些特有信息呢?
		System.setProperty("myKey","myvalue");
		
		
		//获取指定属性信息。
		String value=System.getProperty("os.name");
		System.out.println("value="+value);
	    //可不可以jvm启动时,动态加载一些属性信息呢?
		
		String v=System.getProperty("haha");
		System.out.println("v="+v);
		
		
		/* 获取所有属性信息。
		for(Object obj:prop.keySet())
		{
			String value=(String)prop.get(obj);
			
			System.out.println(obj+"::"+value);
			
		}
		*/
		
	}

}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值