java排序函數,java排序函數對負數的排序會反嗎

本文目錄一覽:

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-hk/n/301629.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:09
下一篇 2024-12-30 16:09

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29

發表回復

登錄後才能評論