数学建模社区-数学中国

标题: java-自定义数组的工具类 [打印本页]

作者: 杨利霞    时间: 2022-9-8 09:55
标题: java-自定义数组的工具类
java-jajava-自定义数组的工具类va-自定义数组的工具类自定义数组jjava-自定义数组的工具类ava-自定义数组的工具类
; t4 y" ]. H" ?. q) v/ Z4 i, ]
* B+ I7 s& H) h6 Sjava-自定义数组的工具类
# H! G& \$ z! J: J4 o1 g9 J6 x8 D& W9 [( x0 a
文章目录  D, |$ y9 E# p2 H
java-自定义数组的工具类
  @6 h1 P. c: z5 |- z4 _. v第一步:封装方法到B.java
  b+ J% L2 B6 Y7 R# S% x第二步:在BCeShi.java中测试
3 t! m. ?5 s* S/ h: A运行结果(对应上面main方法中的代码注释来看):
/ @5 \' \2 d8 S( }, S. e/ d, ]java-自定义数组的工具类1 B. t  Z; u' `* B. k# Z5 _2 v3 M
Java—数组中涉及的常见算法有写到
3 Z$ Y5 {8 S5 u' w- i, i2 G' v4 X5 x; o% y; `
求数值型数组中元素的最大值、最小值、平均数、总和等
( R3 R$ x, O  e3 E数组的复制、反转、查找(线性查找、二分法查找)等等
7 ]& C! I! U5 Z% {& P数组元素的排序算法等等* y4 h9 ^5 v8 x# r* @
这样的功能都可以封装到一个个方法当中
& G& }9 T. L) d
# [; E* f7 g! m% v' N1 Ups:这里和Java—数组中涉及的常见算法相比也相当于把之前分开写的比较冗杂的数组涉及的常用算法归类总结到了一起5 q3 j, O9 A/ B0 F
; U# w" |8 `0 }9 U! d
第一步:封装方法到B.java
  e- i( @. R# m# O: ]3 w1 d- ipackage dierjieduan;
2 ]4 D4 a+ i) y+ N//自定义数组的工具类
/ z8 U/ d- \" a0 T2 qpublic class B {- }4 p* a' \- z3 c% N$ U

$ i, N9 c9 C0 M# [4 }    //求数组的最大值/ T7 y  x% u/ X, l' q( ^  T
    public int getMax(int[] arr){2 K6 m/ o- l) h/ H5 C6 @$ k
        int max=arr[0];* T1 k1 q1 \' v; e3 O0 g
        for (int i = 0; i <arr.length ; i++) {
$ @! [/ X4 P+ T% V            if (arr>max){7 b1 n4 X) a2 W  w- X
                max=arr;0 p. Y2 [# q; z$ D+ j
            }( l) n9 R) g" ^! ?" n7 w
        }5 v1 \3 ]& R" y) U: L
        return max;
+ A$ d2 j0 l8 I) V    }2 g' \- A1 I3 C) o( w7 F

+ v) B' p- T2 q* |7 B7 d$ }& n    //求数组的最小值/ q/ n* [2 z( A% ^8 w7 U
    public int getMin(int[] arr){
3 u0 g. W2 [% m& P6 n$ _& F        int min=arr[0];. O9 C0 H# a! I/ g" ~
        for (int i = 0; i <arr.length ; i++) {  O8 p& y2 B8 }* |1 g
            if (arr<min){5 [: i' d8 L& ~+ m1 T2 p" Y
                min=arr;
) \, ?- Q3 i+ I8 A            }
* V4 ?, s; r& ^: M        }& r9 d  V9 E1 e9 F
        return min;9 C) y5 s3 \8 _" c4 C
    }1 \% Q( T+ w8 J& M( h( N* Q& |5 z
% W) y- Z% X, x
    //求数组的总和8 w" W9 A2 _/ ?4 b5 e
    public int getSum(int[] arr){/ ^: P. F7 T8 E2 r5 p6 V* }
        int sum=0;
  A( D8 B2 D: Y+ P& `; i/ H2 y( w        for (int i = 0; i <arr.length ; i++) {
9 l: e- w3 [) e$ X! i2 B            sum=sum+arr;6 M) r9 T+ C/ R% T( ]
        }
: N: [4 i9 z! ~; {- z9 G: R        return sum;
# Q& p0 [# D: b    }( g& s3 T- I5 Z( s2 G6 E
' a* s# K% \, p, V# E; ^
    //求数组的平均值9 Q3 b& }& k" r, [
    public double getAvg(int[] arr){
; R" P( i$ h' K% l9 X: b
! N  P, E9 n" j' `. q3 N& s5 f        return getSum(arr)/arr.length;//注意返回值的灵活运用
8 s& t8 b  G" q4 c( o    }
" n- n! X4 z: Q: M2 J1 z
- U2 K. n7 d: ]/ Y4 h3 k    //反转数组/ `7 f+ |* a' e. A. D& L
    public void reverse(int[] arr){
( s& }" X2 p8 E+ Z/ Y8 l        for (int i = 0; i <arr.length/2; i++) {0 |' l5 R5 \. D7 y' n
            int temp =arr;3 Y' [7 ]. H1 k, @/ R
            arr=arr[arr.length-i-1];
& Z7 r1 c$ E3 l# Y6 S# r* b  K* W5 C  B            arr[arr.length-i-1]=temp;
' G- `8 E$ x! r, I0 v9 e        }
/ k- j' x! G" e9 d  G  l; @# Y    }
4 c# M! P; G, V1 y2 X2 f( V3 r3 X; a9 u! b2 h% Q
    //复制数组, w. u- Y3 g2 S  a
    public int[] copy(int[] arr){5 l( E& N+ x4 [9 S5 g& _: V3 Z
        int[] arr1=new int[arr.length];
# A4 h- K) T3 P5 |7 M$ s% W* l        for (int i = 0; i <arr.length ; i++) {+ E& {9 z5 F2 y: u
            arr1=arr;
' M6 e: w: I) q( @        }* E: H; ?' i1 Q- d4 ?# w4 r
        return arr1;
) A1 e. U: w$ `% P- }5 n5 Z    }
/ d6 ?6 N6 d+ T/ {+ G/ r/ `# l0 o# F8 R5 f* H' ^
    //数组排序(冒泡)) ~5 [0 M6 Q/ |% X6 q
    public void sort(int[] arr){& }2 ^  b8 d2 |5 ?( g5 L9 z2 ?
        for (int i = 0; i <arr.length ; i++) {4 @. ^1 D1 n9 I4 H( E5 `; }" [' w
            for (int j = 0; j <arr.length-1-i ; j++) {
6 E+ d- U, D/ b3 f+ |                if (arr[j]>arr[j+1]){6 h9 j+ O) ]+ m- M3 ]1 ~
                    int temp=arr[j];
2 d, Y2 }. s1 k2 _; `2 L                    arr[j]=arr[j+1];
' G- m" A, V: ]& O* N: Y                    arr[j+1]=temp;
$ o' I$ l2 @1 @9 t$ M4 }                }% `1 P1 W1 G, a4 x& n8 ~
            }
# V9 h, d- b6 ^. `* |0 I2 C        }$ [6 T7 c2 x0 b% l. Q# K; W
    }" N# z# r- y# X. C9 l* H

  l3 c: d! s1 Z$ d7 V& N    //遍历数组' m3 t5 D! r$ X' E: B2 D4 N
    public void print(int[] arr){
9 K" f& v. s+ c* q$ B0 [        for (int i = 0; i <arr.length ; i++) {4 B! }% v' {8 s0 F/ p
            System.out.print(arr+"\t");
- w: T4 O' H/ B$ G        }' F" }' q$ _/ d/ G* C' k- u  \7 P8 c
        System.out.println();//遍历后换行
; J" e$ F# I7 n/ W    }+ p) C9 k: `: k9 \$ m% q9 b
; I* U, ?( R" a+ W1 r
    //查找指定元素
3 z7 f5 X4 O* p- ^: C' m7 t5 T1 @    public int getIndex(int[] arr,int dest){//两个参数(某个数组找某个元素)
) h! ^. N: L# O0 j% j% j" E        for (int i = 0; i <arr.length ; i++) {
$ i6 k! ^" I( w# n+ w8 J$ ~: \            if (arr==dest){
; t% ?- h- T3 q& n8 ]1 F, |" q. K                return i;
/ I7 y6 d2 D7 t' t. B7 E- x            }
' @# I5 q3 z+ o% G& x4 [        }! Q# `! z! @% q. t
        return -1;//返回1个负数表示没找到
$ |% J( t- B, {  Q& Z8 k    }
% T* Q# z8 x7 _/ \* [/ o; v" y}% \* e9 I% k, e0 B: R6 B) g

" a  F6 i: Z+ X. |/ d( q; Q1 k1
0 |$ N3 Y7 x, S; j. V4 r4 h27 _$ a9 f! s/ g* K+ ~: r1 t
36 i" R0 |; W: A" ?1 q6 ^3 \
4
( j3 r' S3 o7 E* o0 W5* Z) m8 K8 }  z
6
7 d9 s/ ?+ G3 x7
) |! e5 |6 I1 C/ u- r. h1 N83 e& _. u  E( p" _
9
/ h5 P& F2 h$ z2 M. F; A: ~10
1 w6 z0 w1 v) ]3 e9 A11& @; G, {+ R( u5 F+ E1 I
129 v  F) Q) I: V. y  a3 W5 {4 e
133 u( w( L9 p7 n2 ]8 O
14
2 V3 ], T- [0 m- j- g2 g15: c  M1 V& _$ M( P: l, F1 i
166 a7 _) E- z- W- f3 @
17
1 }" U+ ?2 L5 ~5 h' A; j18$ D  G% t" @" Y, C* U2 b2 k$ L
192 L, \- Q2 \6 v! h! X
20
7 ?% w- m7 |4 o' _21
( k1 s+ }1 a8 a% y9 ~5 M22
7 F9 x8 X: n- [6 k23
9 R; P- Y5 N; P# ?% |24$ M$ J+ w; b3 a; d
25+ H7 D" b$ d, t# P+ S) G
26* ], r% X/ V* P/ t# Q
27
) ?6 o9 w: i+ x9 J- U28
  P* u- N2 V" |$ P& `% v7 X/ c; t29& }! i, L4 j2 H
30
! i+ ?3 f6 `5 s  p31
' c1 i: r3 a( P9 o8 Y32
, |2 s0 U5 p! x) }) W" n- J: Y3 H* \33% E4 t6 x9 n6 E+ ~
34" X' q+ \4 A+ R$ b
35
/ v& x+ T' H- J8 W2 U7 L1 Y( B7 {; _3 G36
% s" J) X" X% S( `1 e! q37# r7 l6 B/ f( O  K: X- O
38
1 R5 h2 K* Z. V* O9 k390 u+ c3 v% n2 d& ^, A
40* P* g! I% {+ |* Q
415 D% x0 P* o  c  D7 s# Q
42
% D5 x# c% d9 u43/ ~7 \8 h9 t# L
44$ h& K3 v! Q# Z- Q& v) ^& R8 n
45
' ?' ?2 @' H. v1 v9 ^46. Z) d( J. P+ s) p( g. G: r: D
47) p0 ~& r( E6 e
480 V4 v! i, H" |* \: s" L) P; }
49
1 I% U( R/ G/ Q% V2 e. G2 A50
7 [! K% s' S- N7 n+ `- Q) v51
3 _! S% k5 O$ f4 y2 s$ J. Z52% F$ B, E3 O- f4 K( u: l
53
: Z" L& A9 \; b- s9 G/ `54- r4 u6 E+ W7 q9 U$ K! [
55$ w' F8 G' u$ S" t3 n
56
9 f% @* q; \1 d% b57
- T+ ?* O7 u  F) d58+ f' C# _3 `) W( B( {
59
& ]& @7 u+ F9 _- d% Y, \0 f3 ~# |60
' ^% L/ H  f  r8 R% `61
  x% q0 U/ M4 E: e1 f& G62
2 }, @; s) Z  @7 i' b6 s/ B$ X3 D63( s& o# E, u: S, j: D
64+ c: c  d# b" |3 C* E6 o
65
: z1 B' m2 P  O+ o66
3 ?2 P) ?. g0 s4 I' \! A8 b67
+ w9 N+ G: A7 K: J+ f: y- c68
3 ~) b8 Z8 e6 |" `( G- m: X6 a' x69+ K: `" Y8 X) @+ x, W! t5 W
70
& s. v8 O! y6 d+ S5 X/ ?: j8 k, ~71
- p$ \' u% Y7 [72
4 {$ ^1 ~8 V: u6 @5 r% z- G+ a73
' b$ H8 @( H: n, M4 K74
6 ?6 [( x& V; v( z75" U$ n' {: D' S- F' F7 n
76
! \8 I3 B* _5 }2 R77
, x1 r$ F3 A/ k78
, f" m; M- D; r; Q+ W0 C79
0 X; ]2 R: c  c3 f80* K) l- H7 P+ O: ?- e
818 [5 F. }7 R- S5 I) [
82
/ s( y- y" o. m! N! m- }833 J( a% ]% J+ y* w$ b9 |
84
. j" @: p. h0 {* L85$ _2 _, @. F4 N; W" L# P! B2 y
86. h/ h7 g4 n3 l" v/ \* ~
879 Q4 G6 y- L& v, j
886 E+ T5 P) U% T6 e
89! m3 d; S& T! t( E+ y5 ]6 I
90: N" J+ O" b2 }/ H: a
第二步:在BCeShi.java中测试$ P8 L% x5 z+ o, i* ?, v0 [. R
ps:这里两个都在一个包中,如果不在一个包就要导包
$ X0 n: K2 ^; z2 e# o+ \7 l: l: \% l; m+ Q5 Q
package dierjieduan;
+ G; L! T6 {/ }public class BCeShi {
' c' H. l! B1 a7 H# M; G( E2 b4 K0 \& O# ~    public static void main(String[] args) {. d% f8 S1 Y# v0 ?8 c3 r: v
        B p = new B();//建一个B的对象; Y) w' F% [' x* e8 w# k
        int[] arr= new int[]{12,34,55,423,5567,123456,1,4,5};//新new一个数组
. z5 B' _+ V7 k' G' M        //求最值、总和、平均值8 z) _3 q0 G$ _7 w9 {' u) m
        int max=p.getMax(arr);//最大值
6 z3 K) W; D3 e5 K$ ?2 ~! w: d9 `        int min=p.getMin(arr);//最小值9 K) v9 f% q8 ]$ h4 R6 K
        int sum=p.getSum(arr);//总和) b3 i, }2 ^$ L$ x' `7 n
        double avg=p.getAvg(arr);//平均数1 }* j# y; P5 c# {, J- r! J/ J- c
        System.out.println("最大值:"+max+"最小值为:"+min+"总和为:"+sum+"平均数为:"+avg);//输出( Z( @- L# o3 R& [0 b
        p.print(arr);//反转前遍历(第一行)
. a: T9 j8 X8 l6 [" Z        p.reverse(arr);//反转数组
, K' _. J$ v6 ^0 L3 e+ s        p.print(arr);//反转后遍历(第二行)
, }% p* Z4 u2 \* f        int[] copyarr=p.copy(arr);//复制数组arr给新数组copyarr# H; I- @' u5 C# ?2 p
        p.print(copyarr);//遍历copyarr(第三行)
  l7 R$ L* ~- l. K9 M        p.print(arr);//排序前遍历(第四行)
, e7 }8 L) C) r! {% ~5 ]        p.sort(arr);//排序(冒泡)5 o5 x. w& w  j  b# U1 K/ A
        p.print(arr);//排序后遍历(第五行)
" h5 H9 L9 H4 E$ \        System.out.print("查找元素34:");//查找指定元素(这里针对的是排序后遍历出的数组,而不是最初的数组)
$ I* D/ k+ c4 Y) l4 r        int index= p.getIndex(arr,34);. @7 N8 x0 C# b6 `' C& @2 L
        if (index>=0){# P& i8 a+ ~" E' A+ j
            System.out.println("找到了,在位置:"+index);7 f+ Z5 t* y, E" I1 T
        }else {5 m0 e+ m0 o" p* {* O  S
            System.out.println("没有找到");9 R4 u/ M7 I& s; q
        }( A  t0 v5 P; Y
    }6 {: A+ ~1 W: W4 }. c
}
8 ^( a; Q5 u. {: m7 R" w4 n! J
/ V; \* }! g7 a& @+ u6 C: x1
  K( Z& ?& Q& \2 L) a2* M: E* f4 N& J& e7 B. n( |$ Y
3
+ P- R; `1 D1 h8 U' i4
* a1 N  G, ]1 N5
: d3 I% G  E0 `; q6: v& T& |  E5 J7 ^  j+ t3 J
70 ], ?8 @' O- J( d
8
. `( U% p# |3 S# x8 R94 `) N( L/ F) y( T
10& L$ R4 }- p2 F' d! M" }
11; z3 g% w1 E9 u7 U) M
12
/ X9 ^* i* Y5 }13
+ t1 F' B: B% g( K: O+ T  w0 t14
8 K' w, |6 K0 H6 M# j15
4 V3 m* T( h0 F0 g; w168 x4 o% n, A2 V+ _4 e6 w9 Y: V
17
- Q7 C7 Y0 V& x5 O$ {183 x1 E( T" E8 Q. T1 k$ A4 Q
198 S% B1 a( Y& [
20
: j; g6 M* y  h# L8 k& j2 r21* n' M' c7 o) H0 P& X/ K
22
' S! J" ~5 E7 P8 b1 O239 ^7 l, f# O# ?5 A
24" f; q: c+ V3 K# H0 Q' Y
258 T9 A& W! ~6 l% v
26
% Q% K. [" f, c: g5 I$ h271 O6 w# d0 x% c( q
28
2 b1 e" h( h5 o* u) B4 E6 ?运行结果(对应上面main方法中的代码注释来看):! s+ X% a# U/ ]$ s4 S. J
5 `6 k0 Z3 ?( r8 @2 C4 T$ }* A3 t" x7 N  D
————————————————* N! W  e) z" A  _: f( Y
版权声明:本文为CSDN博主「金士曼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。6 v4 E* G3 }" c0 t( Q8 @
原文链接:https://blog.csdn.net/weixin_45869823/article/details/126754797" j* E0 w* k" M6 q/ ?7 t
, z* p5 \* s; w& }
/ Y- s! s! ~& n+ R) J) s% e$ Q

作者: 1051373629    时间: 2022-10-22 09:42
感谢楼主的资料: p1 S  ~( j: {  k) F  F9 j) w! M





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5