㈠ java编程 将一个数组中的值按逆序重新存放。如原来的顺序为4,1,3,5,9,2,1,到倒置后顺序为1,2,9,5,3,1,4
结果如图所示,代码在下面。不明白的地方可以追问。
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
int[]a=newint[]{4,1,3,5,9,2,1};
intt;
for(inti=0;i<a.length/2;i++){
t=a[i];
a[i]=a[a.length-1-i];
a[a.length-1-i]=t;
}
for(inti=0;i<a.length;i++){
System.out.print(a[i]+",");
}
}
}
㈡ java中怎么将字符串数组中的重复的元素去掉,但是还是保留一个。
import java.util.*;
class BaiDu
{
public static void main(String[] args)
{
TreeSet<String> tr = new TreeSet<String>();
String[] s ={"11","22","22","33","33","33"};
System.out.print("====处理前=======");
for(int i=0;i<s.length;i++){
System.out.print(s[i]+" ");
tr.add(s[i]);
}
String[] s2= new String[tr.size()];
System.out.println("=====处理后======");
for(int i=0;i<s2.length;i++){
s2[i]=tr.pollFirst();//从TreeSet中取出元素重新赋给内数组容
System.out.print(s2[i]+" ");
}
}
}
㈢ 如何用java俩个数组m,n,按从大到小顺序排好,将mn合并,重新排好
package daily;
public class Test {
public static void main(String[] args) {
int[] m = new int[] { 16, 10, 9, 5, 3 };
int[] n = new int[] { 10, 9, 8, 6, 1 };
int[] A = new int[m.length + n.length];
merge(m, n, A);
for (int i = 0; i < A.length; i++)
System.out.println(A[i]);
}
public static void merge(int[] m, int[] n, int[] A) {
int i = 0, j = 0, k = 0;
while (i < m.length && j < n.length) {
if (m[i] > n[j]) {
A[k++] = m[i++];
} else {
A[k++] = n[j++];
}
}
// 如何数组m还没有合并完成
while (i < m.length)
A[k++] = m[i++];
// 如何数组n还没有合并完成
while (j < n.length)
A[k++] = n[j++];
}
}
㈣ 一个java编程题,怎么求出数组中重复数字的出现次数,并按次数从大到下排序
#include <iostream>#include <string>#include <fstream>using namespace std;int count=0;void countNum(int a[],int start,int finish){//cout<<start<<" "<<finish<<" ";int middle=(start+finish)/2;if(start>finish)return ;if(a[middle]==2){count++;countNum(a,start,middle-1);countNum(a,middle+1,finish);//cout<<"get here"<<middle<<endl;}else if(a[middle]>2){countNum(a,start,middle-1);}else{
countNum(a,middle+1,finish);
}while(!inf.eof())
{inf>>s[i];i++;}//int s[]={1,2,2,2,3};int start=0;//,finish=NUM-1;countNum(s,start,i-1);cout<<count<<endl;}(4)java数组排重扩展阅读
#include<iterator>
template<typenamebiIter>
voidinsertion_sort(biIterbegin,biIterend)
{
typedeftypenamestd::iterator_traits<biIter>::value_typevalue_type;
biIterbond=begin;
std::advance(bond,1);
for(;bond!=end;std::advance(bond,1)){
value_typekey=*bond;
biIterins=bond;
biIterpre=ins;
std::advance(pre,-1);
while(ins!=begin&&*pre>key){
*ins=*pre;
std::advance(ins,-1);
std::advance(pre,-1);
}
*ins=key;
}
}
㈤ Java如何将数组中具有相同的元素都删去
ArrayLista=newArrayList(数组);
for(inti=0;i<a.size();i++){
Objectobj=数组[i];
if(a.contains(obj)){
a.remove(i);
}
}
我答案错了,不好意思,当初咋想的忘记了,抱歉。下面的其他匿名网友回答是正确的。另外附上我的修改。
一:利用set的唯一性解决
String[]strArr={"B","A","C","D","C","A"};
Set<String>strList=newHashSet(Arrays.asList(strArr));
System.out.println(strList.toString());
二:创建新的存储单位,判断是否重复后逐个增加
publicstaticvoidmain(String[]args){
String[]strArr={"B","A","C","D","C","A"};
List<String>strList=newArrayList<String>();
for(Stringstr:strArr){
if(strList.contains(str)){
continue;
}
strList.add(str);
}
System.out.println(strList.toString());
}
三:利用steam的distinct方法去重(jdk1.8的新特性)
String[]strArr={"B","A","C","D","C","A"};
List<String>strList=Arrays.asList(strArr);
strList=strList.stream().distinct().collect(Collectors.toList());
System.out.println(strList.toString());
㈥ java 中 统计出 数组中 相同的数字 和字符串
首先,用java中的有序的Array,你根据自己需要重写compare方法,第一个问题就是按版照数字的大小排序权,第二就是按照字符个数排序(有序的Array在建立过程中已经正确排序了),这样就得到两个有序数组。
第二,太简单了,自己思考吧。一个循环搞定,复杂度O(n)。
排序复杂度也是O(n),所以这两个题复杂度都是O(n)