把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
不是说每一个值就是一个数组 我只是要把原来数组相同的字段放到单独的一个数组里面 在比如{a,b,c,a,a,a,a,}那么我新生成的数组就是三个 {a,a,a,a,a}{b} {c}
当然前提是 你不知道数组里面具体是什么 只是叫判断把具有 有相同的字段就放到一个数组 没有的话就单独放一个数组 不要用
for(int i=0 ;i<array.length;i++){
if(array[i]==a){}
if(array[i]==b){}
.....
}
谢谢.....在线 等!!!帮帮忙
æ°ç»ä¸æåç¸åçåæ¯ï¼å¯ä»¥ä½¿ç¨stringçcharatæ¹æ³éååæ¯ï¼æ¾å°ä¸ä¸ªstringä¸ï¼æ¾å°ä¹åå é¤æè¿ä¸ªåæ¯ï¼æ¥çéåä¸ä¸ä¸ªï¼ç¤ºä¾å¦ä¸ï¼
import java.util.Random;
public class ArrayTest {
public static void main(String[] args) {
//1ãæ建ä¸ä¸ªæ°ç»
String[] array={"a","b","c","d","c","d","e"};
//2ãå°æ°ç»ä¸å¼çéåæä¸ä¸ªString
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//æå°åºstr
//3ã为äºè½å¤å®ç°éæ±ï¼æ建ä¸ä¸ªStringBuffer,æ¹ä¾¿ä½¿ç¨ï¼ç¨æ³å¯ä»¥å¨jdk apiæ¾æ¥æ¾
StringBuffer sbu=new StringBuffer(str);//ç¨stræ建ä¸ä¸ªStringBuffer
String flag[][]=new String[sbu.length()][2];//è¿éåªæ¯å®ä¸ä¸ªåºå®é¿çäºç»´æ°ç»ï¼ç¨æ¥åæ¾éåå°å¾åæ¯å åºç°ç次æ°ï¼æ¯å¦ï¼a,1ï¼è¡¨ç¤ºaåºç°äº1次ï¼åªæå¨æ¯ä¸ªåæ¯é½ä¸éå¤ä¸æè½è£ 满
for(int j=0;j<sbu.length();j++){
flag[j][0]=sbu.charAt(j)+"";//äºç»´æ°å第ä¸åæ¾åæ¯
flag[j][1]=1+"";////äºç»´æ°å第äºåæ¾åºç°æ¬¡æ°ï¼è³å°ä¼åºç°ä¸æ¬¡
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//æ¾å°ç¸åçåæ¯ï¼ä»StringBufferä¸å é¤ï¼è¿æ ·ä¸æ¬¡å°±ä¸ä¼éåå®
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//é¿åº¦å 1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
if(flag[i][1]!=null){//ä¸é¢è¯´çflagäºç»´ä¸ä¸å®æ¹é¢ï¼æ以å¤æä¸ä¸ååå¼
String s=flag[i][0];//åºç°çåæ¯
int num=Integer.parseInt(flag[i][1]);//åºç°ç次æ°
System.out.println("åæ¯:"+s+"åºç°äº:"+num+"次");
int j=0;
for( j=0;j<num;j++){
a+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("ç»ææ¯:"+a);
}
//说æä¸ä¸ï¼å¯ä»¥æ ¹æ®ä½ èªå·±çéè¦è£
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-11-10
package test1;
import java.util.Random;
/*
运行结果如下
strlength=abcdcde
字母:a出现了:1次
字母:b出现了:1次
字母:c出现了:2次
字母:d出现了:2次
字母:e出现了:1次
结果是:{a}{b}{cc}{dd}{e}*/
public class ArrayTest {
/**
* java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中
* 把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
*/
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在JDK API找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j<sbu.length();j++){
flag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
if(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;j<num;j++){
a+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}本回答被提问者采纳
import java.util.Random;
/*
运行结果如下
strlength=abcdcde
字母:a出现了:1次
字母:b出现了:1次
字母:c出现了:2次
字母:d出现了:2次
字母:e出现了:1次
结果是:{a}{b}{cc}{dd}{e}*/
public class ArrayTest {
/**
* java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中
* 把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
*/
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在JDK API找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j<sbu.length();j++){
flag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
if(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;j<num;j++){
a+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}本回答被提问者采纳
第2个回答 2015-08-25
1. 初始化3个数组
2. 用System.arraycopy函数对其进行分析
3. 代码如下:
public class Yugi {
public static void main(String[] args){
String[] array = {"a","b","c","d","c","d","e"};
String[] other = new String[0];
String[] orig = new String[0];
String tmp = ",";
for(int i = 0; i < array.length; i++){
String a = array[i];
if(tmp.indexOf("," + a + ",") == -1){
tmp += a + ",";
String[] cloned = new String[orig.length + 1];
System.arraycopy(orig, 0, cloned, 0, orig.length);
cloned[cloned.length - 1] = a;
orig = cloned;
}else{
String[] cloned = new String[other.length + 1];
System.arraycopy(other, 0, cloned, 0, other.length);
cloned[cloned.length - 1] = a;
other = cloned;
}
}
for(String o : orig){
System.out.println(o);
}
for(String o : other){
System.out.println(o);
}
}
}本回答被网友采纳
2. 用System.arraycopy函数对其进行分析
3. 代码如下:
public class Yugi {
public static void main(String[] args){
String[] array = {"a","b","c","d","c","d","e"};
String[] other = new String[0];
String[] orig = new String[0];
String tmp = ",";
for(int i = 0; i < array.length; i++){
String a = array[i];
if(tmp.indexOf("," + a + ",") == -1){
tmp += a + ",";
String[] cloned = new String[orig.length + 1];
System.arraycopy(orig, 0, cloned, 0, orig.length);
cloned[cloned.length - 1] = a;
orig = cloned;
}else{
String[] cloned = new String[other.length + 1];
System.arraycopy(other, 0, cloned, 0, other.length);
cloned[cloned.length - 1] = a;
other = cloned;
}
}
for(String o : orig){
System.out.println(o);
}
for(String o : other){
System.out.println(o);
}
}
}本回答被网友采纳
第3个回答 2011-11-10
实现这种算法很简单.
给你一个思路,自己动手试试:
现有数组list,其值动态改变,也就是说未知,假设里面保存的是String类型的字符串;
如下:
Set<String> set = new HashSet<String>();
for(String s : list) //遍历list
set.add(s1); //将list中的值存放进set里面,去掉重复;思考:自己分析下面程序步骤,为什么要去掉重复?
for(String s1 : set){ //遍历set
System.out.println(); //每遍历一次set值,做换行操作.
for(String s2 : list) //遍历list
if(s1.equals(s2)){ //比较set和list中的值,获取到与s1值相同的s2
//s2就是获取到的值.将s2放入数组,即可得到最终所需要的结果.
System.out.print(s2 + " ");//输出s2
}
}
给你一个思路,自己动手试试:
现有数组list,其值动态改变,也就是说未知,假设里面保存的是String类型的字符串;
如下:
Set<String> set = new HashSet<String>();
for(String s : list) //遍历list
set.add(s1); //将list中的值存放进set里面,去掉重复;思考:自己分析下面程序步骤,为什么要去掉重复?
for(String s1 : set){ //遍历set
System.out.println(); //每遍历一次set值,做换行操作.
for(String s2 : list) //遍历list
if(s1.equals(s2)){ //比较set和list中的值,获取到与s1值相同的s2
//s2就是获取到的值.将s2放入数组,即可得到最终所需要的结果.
System.out.print(s2 + " ");//输出s2
}
}
第4个回答 2011-11-10
利用set的唯一性很好解决
import java.util.Set;
import java.util.TreeSet;
public class BB {
public static void main(String[] args) {
String[] ary = {"a", "b", "c", "d", "c", "d","e"};
Set<String> set = new TreeSet<String>();
for(int i = 0; i < ary.length; i++){
set.add(ary[i]);
}
String[] newAry = set.toArray(new String[0]);
for(int i = 0; i < newAry.length; i++){
System.out.println(newAry[i]);
}
}
}
---------------testing
a
b
c
d
e追问
import java.util.Set;
import java.util.TreeSet;
public class BB {
public static void main(String[] args) {
String[] ary = {"a", "b", "c", "d", "c", "d","e"};
Set<String> set = new TreeSet<String>();
for(int i = 0; i < ary.length; i++){
set.add(ary[i]);
}
String[] newAry = set.toArray(new String[0]);
for(int i = 0; i < newAry.length; i++){
System.out.println(newAry[i]);
}
}
}
---------------testing
a
b
c
d
e追问
不是的 不是说每一个值就是一个数组 我只是要把原来数组相同的字段放到单独的一个数组里面 {a,b,c,a,a,a,a,}那么我新生成的数组就是三个 {a,a,a,a,a}{b} {c}