public class Text01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
LinkedList<Msg> list1=new LinkedList<Msg>();
ArrayList<String> alist=new ArrayList<String>();
ArrayList<Integer> ilist=new ArrayList<Integer>();
while(true){
System.out.println("输入");
String str=in.next();
if(str.equals("show")){
for (int i = 0,size=list1.size();i<size; i++){ System.out.println(list1.get(i));}
for (int i = 0,size=alist.size();i<size; i++){ System.out.println(alist.get(i)+"输入"+ilist.get(i));}
}
else{
if(list1.size()>9){
System.out.println(list1.pop());
}
list1.add(new Msg(str, new Date()));
if(alist.contains(str)){
int index=alist.indexOf(str);
int oldCount=ilist.get(index);
ilist.set(index, oldCount+1);
}
else{
alist.add(str);
ilist.add(1);
}
}
}
}
}
class Msg{
private int num;
private static int count=1;
private String str;
private Date date;
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public Msg(String str,Date date){
num=count++;
this.str=str;
this.date=date;
}
public String toString(){
return "第"+num+"条数据"+sdf.format(date)+"\t"+str;
}
}
上述问题的简问:用户无限输出,当输入show时显示输入过所有的数据,和输入时候的时间点。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
ArrayList<String> list1=new ArrayList<String>();
ArrayList<Date> list2=new ArrayList<Date>();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while(true){
System.out.println("shuru ");
String str=in.next();
if(str.equals("show")){
for(int i=0,size=list1.size();i<size;i++){
System.out.println(sdf.format(list2.get(i))+"\t"+list1.get(i));
}
}else{
list1.add(str);
list2.add(new Date());
}
}
}
}
第二种方式
**解决问题 梳理思想: 首先要判断使用哪一个数组,这个题的需求中改变的是数组首位,linkedlist相对于Arraylist的代价低,只需要用pop方法移除就可以,所以用link的。。。。。
封装,吧需要用的方法,和返回的封装成一个类,在主方法中调用。
以后写项目的时候,有可能会遇到一个方法多次使用的情况,就可以利用封装,节省开发时间。
**