JAVA-基本元素使用(随机数,数组,排序)

JAVA中也不能淡化基本功能啊.

随机数: 点击打开链接

1.

包 java.lang.Math.Random; 静态方法Math.Random() 返回一个0.0~1.0的double

2.

包 java.util.Random; 一个类

Random()的两种构造方法:

Random():创建一个新的随机数生成器。

Random(long seed):使用单个 long 种子创建一个新的随机数生成器。

生成[0,1.0)区间的小数:double d1 = r.nextDouble();
生成[0,5.0)区间的小数:double d2 = r.nextDouble() * 5;
生成[1,2.5)区间的小数:double d3 = r.nextDouble() * 1.5 + 1;
生成-231到231-1之间的整数:int n = r.nextInt();
生成[0,10)区间的整数:int n2 = r.nextInt(10);

数组: 点击打开链接

1.

Java中的每个数组都有一个名为length的属性,表示数组的长度。

length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。

2.

不能直接使用equals函数,因为这个默认仍是比较是否为同一对象.

3.

数组元素不为基本原生数据类型时,存放的是引用类型,而不是对象本身。当生成对象之后,引用才指向对象,否则引用为null

Type []a=Type [2];  a[0]=new Type(); a[1]=new Type();

4.

二维变长数组

<span style="font-family:SimSun;font-size:12px;">public class ArrayTest4
{
    public static void main(String[] args)
    {
        //二维变长数组
        int[][] a = new int[3][];
        a[0] = new int[2];
        a[1] = new int[3];
        a[2] = new int[1];

        //Error: 不能空缺第一维大小
        //int[][] b = new int[][3];
    }
}</span>


排序:

如果用C++的STL 直接sort搞定

对于基本数组 Arrays.sort(a);  反序 Arrays.sort(strArray, Collections.reverseOrder());

忽略大小写:Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

如果要对一个对象数组排序,则要自己实现java.util.Comparator接口.

比较器 要重写Comparator接口中compare方法
import java.io.*;
import java.net.*;
import java.util.*;
public class Test{
 public static void main(String args[]) throws Exception{
  TreeMap<String,Integer> mm=new TreeMap<String,Integer>(new Comparator(){
   public int compare(Object a,Object b){
    String aa=(String)a;
    String bb=(String)b;
    return bb.compareTo(aa);
   }
  });
  mm.put(new String("a"),new Integer(23));
  mm.put("b",new Integer(31));
  Set<Map.Entry<String,Integer>> set=mm.entrySet();
  System.out.println (set);
  System.out.println (mm.keySet());
 }
}

附上快排与堆排的代码:

import java.util.Arrays;
import java.util.Collections;
import java.math.*;

public class Test {
	static int N=100;
	static int [] a=new int[N];
	static int [] b=new int[N];
	static int [] c=new int[N];
	public static void qsort(int []a,int low ,int high){
		if(low>=high) return;
		int l =low,h=high;
		int t=a[l];
		while(l<h){
			while(l<h && t<=a[h]) h--;
			a[l]=a[h];
			while(l<h && t>=a[l]) l++;
			a[h]=a[l];
		}
		a[l]=t;
		qsort(a,low,l-1);
		qsort(a,l+1,high);
	}
	public static void heapadjust(int [] a,int low,int n){
		int s=a[low];
		for(int i=low*2;i<=n;i*=2){
			if(i<n && a[i]<a[i+1]) i++;
			if(s>=a[i]) break;
			a[low]=a[i];
			low=i;
		}
		a[low]=s;
	}
	public static void Heap(int [] a,int n){
		for(int i = n/2;i>=0;i--)
			heapadjust(a,i,n);
		for(int i = 0;i<=n;i++){
			int t =a[0];
			a[0]=a[n-i];
			a[n-i]=t;
			heapadjust(a,0,n-i-1);
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i = 0;i<N;i++)
			c[i]=b[i]=a[i]=(int)(Math.random()*10000);
		qsort(a,0,N-1);
		Heap(b,N-1);
		for(int i = 0;i<N;i++)
			System.out.print(a[i]+" ");
		System.out.println();
		for(int i = 0;i<N;i++)
			System.out.print(b[i]+" ");
		System.out.println();
		Arrays.sort(c);
		for(int i = 0;i<N;i++)
			System.out.print(c[i]+" ");
		
	}
}



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。