本文目錄一覽:
java自動排序函數…….
要實現排序功能,一般有兩種途徑,這裡對基本類型不適用,基本類型一般有Arrays中的靜態方法.
1.對象本身實現Comparable接口,那麼該類的實例就是可以排序的.
有關Comparable:
只要實現了Comparable接口,就可以調用Collections的sort方法對集合中的元素排序.
2.指定一個Comparator,也就是實現了Comparator的類的一個實例.
但是Java本身只提供了一個Comparator的實現,就是Collections.reverseOrder().
該方法返回的是一個已經實現了Comparable接口的反序.
看一下Comparator的全部內容:
public interface Comparator {
int compare(Object o1, Object o2);
boolean equals(Object obj);
}
定義了兩個方法,其實我們一般都只需要實現compare方法就行了,因為類都是默認從Object繼承
所以會使用Object的equals方法.
Comparator一般都作為一個匿名類出現,對於沒有實現Comparable的對象的集合,排序的時候
需要指定一個Comparator.
這裡舉例說明
對於實現了Comparable的類我們就用最簡單的Integer
List list=new ArrayList();
list.add(new Integer(3));
list.add(new Integer(53));
list.add(new Integer(34));
Collections.sort(list);
對於沒有實現Comparable的,我們就用Object,按照hashCode大小來排序.
List list= new ArrayList();
list.add(new Object());
list.add(new Object());
list.add(new Object());
Collections.sort(list,new Comparator(){ public int compare(Object o1, Object o2){
return (o1.hashCode()-o2.hashCode());
})
如何在Java中從鍵盤輸入10個數,用選擇法按降序排序並輸出?
在Java中在數組中保存10個數,調用下面的排序函數,用選擇法按降序排序:public static void selectionSort(int[] arr){ for (int i = 0; i arr.length – 1; i++) { int max = i; for (int j = i + 1; j arr.length; j++) { if (arr[max] arr[j]) { max = j; } } if (max != i) { int tmp = arr[max]; arr[max] = arr[i]; arr[i] = tmp; } } }
java定製排序
文件名:Frame1.java
關鍵代碼:
//選擇排序法函數
public void select_Sort(int[] num)
{
int i,j,MX;
int temp;
for(i = 0; inum.length-1; i++)
{
MX = i ;
for(j = i+1 ; jnum.length; j++)
{
if(num[MX] num[j])
MX = j ;
}
temp = num[i];
num[i] = num[MX];
num[MX] = temp;
}
}
//插入排序函數
public void insert_Sort(int[] data)
{
int i,j,mx;
int key ;
for(i=1; i data.length -1; i++)
{
key = data[i];
mx = i;
for(j= i-1;j0;j–)
{
if(keydata[j])
{
data[j+1] = data[j];
mx = j ;
}
}
data[mx]=key;
}
}
全部代碼
/////////////////////////
package mytest;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import javax.swing.JOptionPane;
public class Frame1 extends JFrame {
JPanel contentPane;
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JLabel jLabel4 = new JLabel();
JTextField txt1 = new JTextField();
JTextField txtOrder = new JTextField();
JButton btn2 = new JButton();
JTextField txt2 = new JTextField();
JTextField txtIn = new JTextField();
JButton btn1 = new JButton();
public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(457, 432));
setTitle(“Frame Title”);
jLabel1.setText(“排序前”);
jLabel1.setBounds(new Rectangle(30, 99, 59, 36));
jLabel2.setText(“排序後(1)”);
jLabel2.setBounds(new Rectangle(27, 183, 66, 36));
jLabel3.setText(“排序後(2)”);
jLabel3.setBounds(new Rectangle(29, 259, 76, 36));
jLabel4.setText(“用戶輸入”);
jLabel4.setBounds(new Rectangle(28, 35, 71, 36));
txt1.setBounds(new Rectangle(116, 182, 307, 33));
txtOrder.setBounds(new Rectangle(118, 106, 307, 37));
btn2.setBounds(new Rectangle(263, 327, 162, 42));
btn2.setText(“插入排序”);
btn2.addActionListener(new Frame1_btn2_actionAdapter(this));
txt2.setBounds(new Rectangle(118, 259, 307, 33));
txtIn.setText(“請輸入數字,並按回車鍵。一次只能輸入一個數字”);
txtIn.setBounds(new Rectangle(116, 37, 306, 39));
txtIn.addKeyListener(new Frame1_txtIn_keyAdapter(this));
btn1.setBounds(new Rectangle(28, 327, 162, 42));
btn1.setText(“選擇排序”);
btn1.addActionListener(new Frame1_btn1_actionAdapter(this));
contentPane.add(jLabel4);
contentPane.add(jLabel1);
contentPane.add(txtOrder);
contentPane.add(jLabel2);
contentPane.add(txt1);
contentPane.add(jLabel3);
contentPane.add(txt2);
contentPane.add(txtIn);
contentPane.add(btn1);
contentPane.add(btn2);
}
int[] Number1=new int[10];
int[] Number2=new int[10];
int i=0;
public void txtIn_keyPressed(KeyEvent e) {
try{
if(e.getKeyChar()==’\n’){
Number1[i]=Integer.parseInt(txtIn.getText().trim());
Number2[i]=Integer.parseInt(txtIn.getText().trim());
String txt=txtOrder.getText().trim();
txtOrder.setText(txt+txtIn.getText().trim()+”,”);
txtIn.setText(“”);
txtIn.requestFocus(true);
if(++i10){
JOptionPane.showMessageDialog(this,”只能輸入10個整數!”);
txtIn.setText(“”);
return;
}
}
}catch(Exception ex){
JOptionPane.showMessageDialog(this,ex.getMessage());
txtIn.setText(“”);
ex.printStackTrace();
}
}
//選擇排序法函數
public void select_Sort(int[] num)
{
int i,j,MX;
int temp;
for(i = 0; inum.length-1; i++)
{
MX = i ;
for(j = i+1 ; jnum.length; j++)
{
if(num[MX] num[j])
MX = j ;
}
temp = num[i];
num[i] = num[MX];
num[MX] = temp;
}
}
//選擇排序按鈕監聽方法
public void btn1_actionPerformed(ActionEvent e) {
txt1.setText(“”);
select_Sort(Number1);//調用選擇排序函數
for(int j=0;jNumber1.length;j++){
String txt=txt1.getText().trim();
txt1.setText(txt+Number1[j]+”,”);
}
}
//插入排序函數
public void insert_Sort(int[] data)
{
int i,j,mx;
int key ;
for(i=1; i data.length -1; i++)
{
key = data[i];
mx = i;
for(j= i-1;j0;j–)
{
if(keydata[j])
{
data[j+1] = data[j];
mx = j ;
}
}
data[mx]=key;
}
}
public void btn2_actionPerformed(ActionEvent e) {
txt2.setText(“”);
insert_Sort(Number2);
for(int j=0;jNumber2.length;j++){
String txt=txt2.getText().trim();
txt2.setText(txt+Number2[j]+”,”);
}
}
//主函數
public static void main(String[] arges){
Frame1 F=new Frame1();
F.setVisible(true);
}
}
class Frame1_btn2_actionAdapter implements ActionListener {
private Frame1 adaptee;
Frame1_btn2_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn2_actionPerformed(e);
}
}
class Frame1_btn1_actionAdapter implements ActionListener {
private Frame1 adaptee;
Frame1_btn1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn1_actionPerformed(e);
}
}
class Frame1_txtIn_keyAdapter extends KeyAdapter {
private Frame1 adaptee;
Frame1_txtIn_keyAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void keyPressed(KeyEvent e) {
adaptee.txtIn_keyPressed(e);
}
}
java常用函數方法
Java的一些常用函數,方法總結:
1:數組方面:
數組是一個對象,數組名可以理解和C++裡面一樣,
1):System.arraycopy(src,srcindex,dst,dstindex,src.length);
2):java.util.Arrays.sort(數組名);//塊數排序法進行排序
3):java.util.Arrays.binarySearch(arr,key);//從哪裡收,關鍵值,返回索引.沒有的話返回-1
4):java.util.Array.fill(arr,value),設置數組初始值
5):Array.equals(arr1,arr2)//比較兩個數組中元素是不是全部相等,是返回true,不是返回false
2:時間方面:
public static String dateToStr(java.util.Date date)
{
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String str = sdf.format(date);
return str;
}
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class DateUtil
{
public static java.util.Date parseDate(String dateStr, String format)
{
java.util.Date date = null;
try
{
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
String dt = dateStr.replaceAll(“-“, “/”);
if ((!dt.equals(“”)) (dt.length() format.length()))
{
dt += format.substring(dt.length()).replaceAll(“[YyMmDdHhSs]”, “0”);
}
date = (java.util.Date) df.parse(dt);
}
catch (Exception e)
{
}
return date;
}
public static java.util.Date parseDate(String dateStr)
{
return parseDate(dateStr, “yyyy/MM/dd”);
}
public static String format(java.util.Date date, String format)
{
String result = “”;
try
{
if (date != null)
{
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
result = df.format(date);
}
}
catch (Exception e)
{
}
return result;
}
public static String format(java.util.Date date)
{
return format(date, “yyyy/MM/dd”);
}
public static int getYear(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.YEAR);
}
public static int getMonth(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.MONTH) + 1;
}
public static int getDay(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.DAY_OF_MONTH);
}
public static int getHour(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.HOUR_OF_DAY);
}
public static int getMinute(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.MINUTE);
}
public static int getSecond(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.SECOND);
}
public static long getMillis(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
public static String getDate(java.util.Date date)
{
return format(date, “yyyy/MM/dd”);
}
public static String getTime(java.util.Date date)
{
return format(date, “HH:mm:ss”);
}
public static String getDateTime(java.util.Date date)
{
return format(date, “yyyy/MM/dd HH:mm:ss”);
}
public static java.util.Date addDate(java.util.Date date, int day)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);
return c.getTime();
}
public static int diffDate(java.util.Date date, java.util.Date date1)
{
return (int) ((getMillis(date) – getMillis(date1)) / (24 * 3600 * 1000));
}
public static String getMonthBegin(String strdate)
{
java.util.Date date = parseDate(strdate);
return format(date, “yyyy-MM”) + “-01”;
}
public static String getMonthEnd(String strdate)
{
java.util.Date date = parseDate(getMonthBegin(strdate));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
return formatDate(calendar.getTime());
}
public static String formatDate(java.util.Date date)
{
return formatDateByFormat(date, “yyyy-MM-dd”);
}
public static String formatDateByFormat(java.util.Date date, String format)
{
String result = “”;
if (date != null)
{
try
{
SimpleDateFormat sdf = new SimpleDateFormat(format);
result = sdf.format(date);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return result;
}
}
Java日期格式化及其使用例子
1 SimpleDateFormat擔當重任,怎樣格式化都行
import java.util.Date;
import java.text.SimpleDateFormat;
public class Demo
{
public static void main(String[] args)
{
Date now=new Date();
SimpleDateFormat f=newSimpleDateFormat(“今天是”+”yyyy年MM月dd日 E kk點mm分”);
System.out.println(f.format(now));
f=new SimpleDateFormat(“a hh點mm分ss秒”);
System.out.println(f.format(now));
}
}
2 從字符串到日期類型的轉換:
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.text.*;
publicclass Demo
{
public static void main(String[] args)
{
String strDate=”2005年04月22日”;
//注意:SimpleDateFormat構造函數的樣式與strDate的樣式必須相符
SimpleDateFormat simpleDateFormat=new SimpleDateFormat(“yyyy年MM月dd日”);
//必須捕獲異常
try
{
Date date=simpleDateFormat.parse(strDate);
System.out.println(date);
}
catch(ParseException px)
{
px.printStackTrace();
}
}
}
3 將毫秒數換轉成日期類型
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.text.*;
public class Demo
{
public static void main(String[] args)
{
long now=System.currentTimeMillis();
System.out.println(“毫秒數:”+now);
Date dNow=new Date(now);
System.out.println(“日期類型:”+dNow);
}
}
4 獲取系統時期和時間,轉換成SQL格式後更新到數據庫
java.util.Date d=new java.util.Date(); //獲取當前系統的時間
//格式化日期
new java.text.SimpleDateFormat s= new java.text.SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String dateStr = s.format(d); //轉為字符串
使用RS更新數據庫,仍然要用rs.updateString,而不是rs.updateDade。
rs.updateString(“regtime”,dateStr); //regtime字段為datetime類型的
5 按本地時區輸出當前日期
Date myDate = new Date();
System.out.println(myDate.toLocaleString());
輸出結果為:
2003-5-30
6 如何格式化小數
DecimalFormat df = new DecimalFormat(“,###.00”);
double aNumber = 33665448856.6568975;
String result = df.format(aNumber);
Sytem. out.println(result);
輸出結果為:
33,665,448,856.66
其他:獲取毫秒時間 System.currentTimeMillis();
7 在數據庫里的日期只以年-月-日的方式輸出
定義日期格式:SimpleDateFormat sdf = new SimpleDateFormat(yy-MM-dd);
sql語句為:String sqlStr = “select bookDate from roomBook where bookDate between ‘2007-4-10’ and ‘2007-4-25′”;
輸出:
System.out.println(df.format(rs.getDate(“bookDate”)));
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/301629.html