public class Test { private Map map = new HashMap();
public void add(Object element){ int res; if( !map.containsKey(element) ){ res = 1; }else{ res = ((Integer)map.get(element)).intValue()+1; }
map.put(element, new Integer(res)); }
public Iterator getElement(){ return map.keySet().iterator(); }
public int getValue(Object element){ return ((Integer)map.get(element)).intValue(); }
public static void main(String[] args) { Test cmp = new Test(); String [] test = {"a","b","a","c","d","b","c","e","a"}; for( int i=0; i<test.length; i++ ){ cmp.add(test[i]); }
Iterator it = cmp.getElement(); while( it.hasNext() ){ Object element = it.next(); int res = cmp.getValue(element); System.out.println(element+":"+res); } } }
public static void main(String[] args) { Test cmp = new Test(); String [] test = {"a","b","a","c","d","b","c","e","a"}; for( int i=0; i <test.length; i++ ){ cmp.add(test[i]); } Iterator it = cmp.getElement(); while( it.hasNext() ){ Object element = it.next(); int res = cmp.getValue(element); System.out.println(element+":"+res); 这个程序就可以吧但是 Iterator it = cmp.getElement(); while( it.hasNext() ){ Object element = it.next(); int res = cmp.getValue(element); System.out.println(element+":"+res); 有点看不懂哦,能跟我说一下数据集的用法吗?
import java.util.*;public class Test { public static void main(String args[]) throws Exception { int[] ints = new int[]{1,2,2,3,3,4,5,2,6}; HashSet<Integer> set = new HashSet<Integer>(); HashMap<Integer, Integer>/*重复的数,重复的次数*/ map = new HashMap<Integer, Integer>(); int lastSetSize = 0; for(int i:ints){ set.add(i); if(set.size()==lastSetSize){//如果是true则这个数字必定重复 if(map.containsKey(i)){//如果是true,则不止一次重复 map.put(i, map.get(i)+1); }else{ map.put(i, 1);//数字i重复了1次 } } lastSetSize = set.size(); } System.out.println("重复数字列表"); for(Integer i:map.keySet()){ System.out.println("数字"+i+"重复次数"+map.get(i)+"次"); } } }
手头没有Eclipse,看明白了就可以改了。 #include <iostream> #include <set> #include <map> using namespace std; int main (int argc, char * const argv[]) { int a[] = { 1, 2, 3, 1, 3, 1, 4, 2 }; set<int> s; map<int, int> m; for (int i = 0; i < sizeof(a) / sizeof(int); ++i) { if (s.find(a[i]) != s.end()) { m[a[i]] += 1; } else { s.insert(a[i]); m[a[i]] = 1; } }
map<int, int>::iterator iter = m.begin(); for (; iter != m.end(); ++iter) { cout<<iter->first<<" "<<iter->second<<"\n"; } return 0; }
int a[] = { 1, 2, 3, 1, 3, 1, 4, 2 }; int [] count = new int[a.length]; for (int i = 0; i<a.length; i++){ count[i]=0; for (int j = 0; j<a.length; j++){ if(a[i]==a[j]){ count[i]++; } } } for (int i = 0; i<a.length; i++){ System.out.println (a[i]+"的个数有:"+count[i]); }
} } 我也是新手 写的比较简单
以前写了个求字符串的,原理差不多 //在给定的字符串中,按照出现次数的多少重新排列,结果中不含重复的字符import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.TreeSet; public class JudgeCharTimes { public static String getMaxString(String s) //找出给定字符串中重复次数最多的字符 { char[] ch = s.toCharArray(); //转换成字符数组 ArrayList lists = new ArrayList(); TreeSet set = new TreeSet(); for( int i = 0; i < ch.length; i++ ) { lists.add( String.valueOf( ch[i] ) ); //添加到lists set.add( String.valueOf( ch[i] ) ); //添加去重复后的字符到set } // System.out.println("共有如下字符:" + set); Collections.sort( lists ); //对字符进行排序 // System.out.println( "排序后为:" + lists ); StringBuffer sb = new StringBuffer(); for( int i = 0; i < lists.size(); i++ ) { sb.append( lists.get( i ) ); }
s = sb.toString(); int maxCount = 0; //次数最多的字符的次数 String maxString = ""; ArrayList array = new ArrayList();
for( int i = 1; i < 3; i++ ) { Iterator it = set.iterator(); //使用迭代器 while( it.hasNext() ) { String o = (String)it.next(); int begin = s.indexOf( o ); int end = s.lastIndexOf( o ); int value = end - begin + 1; if( value > maxCount ) { maxCount = value; maxString = o; //此时的o为最大次数的字符 } } } return maxString ; // return maxString +" " + maxCount; //字符和其次数 } //---------------------------------------------------------------------------- public static String deleteElement(String s, String max) //删除给定字符串中给定的字符 { ArrayList list = new ArrayList();
for( int i = 0; i < s.length(); i++ ) { list.add( s.charAt( i ) ); //添加到list } Collections.sort(list); StringBuffer sb = new StringBuffer(); for( int i = 0; i < list.size(); i++ ) { sb.append( list.get( i ) ); } sb.delete( sb.indexOf(max), sb.lastIndexOf(max) + 1 ); return sb.toString(); } //------------------------------------------------------------------------- public static String getResult(String s) { StringBuffer sb = new StringBuffer();
while( !s.equals( "" )) { sb.append( getMaxString( s )); s = deleteElement( s, getMaxString( s ) ); } return sb.toString(); } // ---------------------------------------------------------------------------- public static void main(String[] args) { String s = "aasrtfgsadddppoyiutrjgnhgggdfffsdderrrruuubnvmcccvv"; // System.out.println( getResult( s ) ); //返回按次数从大到小的序列,去掉重复 System.out.println( getMaxString( s ) ); //返回最大字符和其次数 } }
public static void main(String[] args) { int[] a = {1,2,2,3,4,5}; Set<Integer> set = new HashSet<Integer>(); Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i : a) { if (set.add(i)) { map.put(i, 1); } else { map.put(i, map.get(i)+1); } } Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet(); for(Map.Entry<Integer, Integer> entry : entrySet) { System.out.println(entry.getKey() + ":" +entry.getValue()); } }
sun_3211 我为java狂 java为我赚钱 等 级: 发表于:2008-01-11 10:23:3021楼 得分:0 Java codepublic class Test {
public static void main (String [] args){
int a[] = { 1, 2, 3, 1, 3, 1, 4, 2 }; int [] count = new int[a.length]; for (int i = 0; i<a.length; i++){ count[i]=0; for (int j = 0; j<a.length; j++){ if(a[i]==a[j]){ count[i]++; } } } for (int i = 0; i<a.length; i++){ System.out.println (a[i]+"的个数有:"+count[i]); }
private Map map = new HashMap();
public void add(Object element){
int res;
if( !map.containsKey(element) ){
res = 1;
}else{
res = ((Integer)map.get(element)).intValue()+1;
}
map.put(element, new Integer(res));
}
public Iterator getElement(){
return map.keySet().iterator();
}
public int getValue(Object element){
return ((Integer)map.get(element)).intValue();
}
public static void main(String[] args) {
Test cmp = new Test();
String [] test = {"a","b","a","c","d","b","c","e","a"};
for( int i=0; i<test.length; i++ ){
cmp.add(test[i]);
}
Iterator it = cmp.getElement();
while( it.hasNext() ){
Object element = it.next();
int res = cmp.getValue(element);
System.out.println(element+":"+res);
}
}
}
头好大,但还是谢谢Code
Test cmp = new Test();
String [] test = {"a","b","a","c","d","b","c","e","a"};
for( int i=0; i <test.length; i++ ){
cmp.add(test[i]);
} Iterator it = cmp.getElement();
while( it.hasNext() ){
Object element = it.next();
int res = cmp.getValue(element);
System.out.println(element+":"+res); 这个程序就可以吧但是
Iterator it = cmp.getElement();
while( it.hasNext() ){
Object element = it.next();
int res = cmp.getValue(element);
System.out.println(element+":"+res);
有点看不懂哦,能跟我说一下数据集的用法吗?
import java.util.*;public class Test {
public static void main(String args[]) throws Exception {
int[] ints = new int[]{1,2,2,3,3,4,5,2,6};
HashSet<Integer> set = new HashSet<Integer>();
HashMap<Integer, Integer>/*重复的数,重复的次数*/ map = new HashMap<Integer, Integer>();
int lastSetSize = 0;
for(int i:ints){
set.add(i);
if(set.size()==lastSetSize){//如果是true则这个数字必定重复
if(map.containsKey(i)){//如果是true,则不止一次重复
map.put(i, map.get(i)+1);
}else{
map.put(i, 1);//数字i重复了1次
}
}
lastSetSize = set.size();
}
System.out.println("重复数字列表");
for(Integer i:map.keySet()){
System.out.println("数字"+i+"重复次数"+map.get(i)+"次");
}
}
}
#include <iostream>
#include <set>
#include <map>
using namespace std;
int main (int argc, char * const argv[])
{
int a[] = { 1, 2, 3, 1, 3, 1, 4, 2 }; set<int> s;
map<int, int> m;
for (int i = 0; i < sizeof(a) / sizeof(int); ++i)
{
if (s.find(a[i]) != s.end())
{
m[a[i]] += 1;
}
else
{
s.insert(a[i]);
m[a[i]] = 1;
}
}
map<int, int>::iterator iter = m.begin();
for (; iter != m.end(); ++iter)
{
cout<<iter->first<<" "<<iter->second<<"\n";
}
return 0;
}
遍历,array[i] += 1;
set.size()
map.containsKey(i)
是什么意思啊?感谢八爪鱼的Code我现在水平就是会编条件循环什么的刚学不到1个月,比较面对于数据集也不太了解,希望大家多帮忙!!
这个是什么意思有什么作用?
为什么要这么定义呢?
这是你说的“能不能根据[1,2,2,3,3,4,5,2,6,]这个数组编一个”,所以我就初始化了一个数组。
其实也可以这样初始化:
int[] ints = new int[9];
ints[0] = 1;
......
ints[8] = 62.int lastSetSize = 0;
这个作用就是记录上一次HashSet的大小(HashSet是一个袋子,什么东西都可以往里面放,但是不能放重样的)。如果这一次放进去东西后HashSet大小还是原来那么大,说明这次放进去的东西是重样的。3.set.size()
这个的返回值就是HashSet里有多少东西,术语说就是HashSet的当前的大小。4.map.containsKey(i)
这个意思就是HashMap里是不是包含了i这个数。(你需要去下载一个JDK文档中文版,看map到底是什么东西)5.map.put(i,map.get(i)+1);
map里放的是一对一对的数,比如(x,y),x代表重复的数,y代表重复的次数。上面一行的意思是把重复的次数加1。
以后有不会的就请教你吧,你收个徒弟吧,你编程好规范啊!!!
else{
map.put(i, 1);//数字i重复了1次
为什么还要写这个呢?
map.get(i)是什么意思?
for(Integer i:map.keySet()){
用Integer不用Int是说明i是类吗?挺麻烦你的,有空请你吃饭哈!
http://gceclub.sun.com.cn/Java_Docs/jdk6/JDK_API_1_6_zh_CN.CHM3.map.put(i, 1);//数字i重复了1次
这个,当map里第一次放东西的时候需要这样,不然执行“map.put(i,map.get(i)+1);”时map.get(i)==null,null+1肯定出错。4.Integer和int可以互相之间自动转换,这是java1.5的新特性,所以这段代码在1.4版本及以下编译器编译时会出错。
public static void main (String [] args){
int a[] = { 1, 2, 3, 1, 3, 1, 4, 2 };
int [] count = new int[a.length];
for (int i = 0; i<a.length; i++){
count[i]=0;
for (int j = 0; j<a.length; j++){
if(a[i]==a[j]){
count[i]++;
}
}
}
for (int i = 0; i<a.length; i++){
System.out.println (a[i]+"的个数有:"+count[i]);
}
}
}
我也是新手 写的比较简单
//在给定的字符串中,按照出现次数的多少重新排列,结果中不含重复的字符import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet;
public class JudgeCharTimes
{ public static String getMaxString(String s) //找出给定字符串中重复次数最多的字符
{
char[] ch = s.toCharArray(); //转换成字符数组
ArrayList lists = new ArrayList();
TreeSet set = new TreeSet();
for( int i = 0; i < ch.length; i++ )
{
lists.add( String.valueOf( ch[i] ) ); //添加到lists
set.add( String.valueOf( ch[i] ) ); //添加去重复后的字符到set
}
// System.out.println("共有如下字符:" + set);
Collections.sort( lists ); //对字符进行排序
// System.out.println( "排序后为:" + lists );
StringBuffer sb = new StringBuffer();
for( int i = 0; i < lists.size(); i++ )
{
sb.append( lists.get( i ) );
}
s = sb.toString();
int maxCount = 0; //次数最多的字符的次数
String maxString = "";
ArrayList array = new ArrayList();
for( int i = 1; i < 3; i++ )
{
Iterator it = set.iterator(); //使用迭代器
while( it.hasNext() )
{
String o = (String)it.next();
int begin = s.indexOf( o );
int end = s.lastIndexOf( o );
int value = end - begin + 1;
if( value > maxCount )
{
maxCount = value;
maxString = o; //此时的o为最大次数的字符
}
} } return maxString ;
// return maxString +" " + maxCount; //字符和其次数
}
//----------------------------------------------------------------------------
public static String deleteElement(String s, String max) //删除给定字符串中给定的字符
{
ArrayList list = new ArrayList();
for( int i = 0; i < s.length(); i++ )
{
list.add( s.charAt( i ) ); //添加到list
}
Collections.sort(list);
StringBuffer sb = new StringBuffer();
for( int i = 0; i < list.size(); i++ )
{
sb.append( list.get( i ) );
}
sb.delete( sb.indexOf(max), sb.lastIndexOf(max) + 1 );
return sb.toString();
}
//-------------------------------------------------------------------------
public static String getResult(String s)
{
StringBuffer sb = new StringBuffer();
while( !s.equals( "" ))
{
sb.append( getMaxString( s ));
s = deleteElement( s, getMaxString( s ) );
}
return sb.toString();
}
// ----------------------------------------------------------------------------
public static void main(String[] args)
{
String s = "aasrtfgsadddppoyiutrjgnhgggdfffsdderrrruuubnvmcccvv";
// System.out.println( getResult( s ) ); //返回按次数从大到小的序列,去掉重复
System.out.println( getMaxString( s ) ); //返回最大字符和其次数
}
}
int[] a = {1,2,2,3,4,5};
Set<Integer> set = new HashSet<Integer>();
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i : a) {
if (set.add(i)) {
map.put(i, 1);
} else {
map.put(i, map.get(i)+1);
}
} Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet();
for(Map.Entry<Integer, Integer> entry : entrySet) {
System.out.println(entry.getKey() + ":" +entry.getValue());
}
}
我为java狂 java为我赚钱
等 级:
发表于:2008-01-11 10:23:3021楼 得分:0
Java codepublic class Test {
public static void main (String [] args){
int a[] = { 1, 2, 3, 1, 3, 1, 4, 2 };
int [] count = new int[a.length];
for (int i = 0; i<a.length; i++){
count[i]=0;
for (int j = 0; j<a.length; j++){
if(a[i]==a[j]){
count[i]++;
}
}
}
for (int i = 0; i<a.length; i++){
System.out.println (a[i]+"的个数有:"+count[i]);
}
}
}
我也是新手 写的比较简单 我为java狂,最后输出时count[i]应该减一了,因为在两层for循环内循环的if判断中下标是从0开始的,和自身比较了一次!
public static void main(String args[]) throws Exception {
int[] ints = new int[]{1,2,2,3,3,4,5,2,6};
HashSet<Integer> set = new HashSet<Integer>();
HashMap<Integer, Integer>/*重复的数,重复的次数*/ map = new HashMap<Integer, Integer>();
int lastSetSize = 0;
for(int i:ints){
set.add(i);
if(set.size()==lastSetSize){//如果是true则这个数字必定重复
if(map.containsKey(i)){//如果是true,则不止一次重复
map.put(i, map.get(i)+1);
}else{
map.put(i, 1);//数字i重复了1次
}
}
lastSetSize = set.size();
}
System.out.println("重复数字列表");
for(Integer i:map.keySet()){
System.out.println("数字"+i+"重复次数"+map.get(i)+"次");
}
}
}如果有一个数重复4次我想输出“重复了四次”
如果只有一个数重复了2次我想输出“一个数字重复了两次”
如果有两个数字分别重复了两次输出“两个数字重复了两次”
如果一个数重复了三次一个数重复了两次输出“一个重复两次一个重复三次”
怎么从Map里读出重复的数的次数然后判断,跪求希望能根据以上程序改一下,小弟跪谢了!
public static boolean main(String args[]) throws Exception {
int[] ints = new int[]{1,2,2,2,3,4,5,2,6};
int j=0;
HashSet<Integer> set = new HashSet<Integer>();
HashMap<Integer, Integer>/*重复的数,重复的次数*/ map = new HashMap<Integer, Integer>();
int lastSetSize = 0;
for(int i:ints){
set.add(i);
if(set.size()==lastSetSize){//如果是true则这个数字必定重复
if(map.containsKey(i)){//如果是true,则不止一次重复
map.put(i, map.get(i)+1);
}else{
map.put(i, 1);//数字i重复了1次
}
}
lastSetSize = set.size();
}
for(Integer i:map.keySet()){
j=map.get(i).intValue();
if (j==4){
return true;
}
else{
return false;
}
}
}
}我写了一个判断的程序好像不行编译出错
如果按照判断的形式分别写
如果有一个数重复4次我想输出“Truee” else 'False'
如果只有一个数重复了2次我想输出“True” else 'False'
如果有两个数字分别重复了两次输出“True” else 'False'
如果一个数重复了三次一个数重复了两次输出“True”else 'False'