Java 如何根据以前是否打印过相同的值来确定是否打印数组列表中的数据
我已经寻找了一段时间,并在这方面的工作,但我只是不知道最好的方式做这件事。 所以在我的android应用程序中,我有两个arraylist。一个保存日期,另一个保存当天购买的物品。我想做的是将其打印到文本视图中显示。 我想用一个字符串来保存当前日期,看看它是否等于前一个日期。如果有,则不打印,只打印“”及其旁边的项目。该列表基于时间而非日期。因此,在某些情况下,日期数组列表彼此相同。所以我希望它是这样的Java 如何根据以前是否打印过相同的值来确定是否打印数组列表中的数据,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,我已经寻找了一段时间,并在这方面的工作,但我只是不知道最好的方式做这件事。 所以在我的android应用程序中,我有两个arraylist。一个保存日期,另一个保存当天购买的物品。我想做的是将其打印到文本视图中显示。 我想用一个字符串来保存当前日期,看看它是否等于前一个日期。如果有,则不打印,只打印“”及其旁边的项目。该列表基于时间而非日期。因此,在某些情况下,日期数组列表彼此相同。所以我希望它是这样的 2016/12/1 Item1 Item2 I
2016/12/1 Item1
Item2
Item3
2016/01/3 Item1
Item2
2016/02/25 Item1
2016/12/1 Item1
2016/12/1 Item2
2016/12/1 Item3
2016/01/3 Item1
2016/01/3 Item2
2016/02/25 Item1
但现在是这样的
2016/12/1 Item1
Item2
Item3
2016/01/3 Item1
Item2
2016/02/25 Item1
2016/12/1 Item1
2016/12/1 Item2
2016/12/1 Item3
2016/01/3 Item1
2016/01/3 Item2
2016/02/25 Item1
这就是我到目前为止所做的:
public class MainActivity extends AppCompatActivity {
ArrayList<String> myDates = new ArrayList<String>();
ArrayList<String> myProducsts = new ArrayList<String>();
TextView dates, products;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dates = (TextView)findViewById(R.id.dates);
products = (TextView)findViewById(R.id.products);
//for total of 5 orders
myPurchase first, second, thrid, fourth, fifth;
myDates.add("2016/3/30:");
myDates.add("2016/3/30:");
myDates.add("2016/3/30:");
myDates.add("2016/3/30:");
myDates.add("2016/3/30:");
myDates.add("2016/4/8:");
myDates.add("2016/4/8:");
myProducsts.add("Item1");
myProducsts.add("Item2");
myProducsts.add("Item3");
myProducsts.add("Item4");
myProducsts.add("Item5");
myProducsts.add("Item6");
myProducsts.add("Item7");
for(int i = 0; i < myDates.size(); i++)
{
String next = myDates.get(i);
String nextPro = myProducsts.get(i) + "\n";
dates.append(next + nextPro);
}
}
public类MainActivity扩展了AppCompatActivity{
ArrayList myDates=新建ArrayList();
ArrayList myProducsts=新的ArrayList();
文本查看日期、产品;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dates=(TextView)findViewById(R.id.dates);
products=(TextView)findViewById(R.id.products);
//总共5个订单
我的第一次购买,第二次购买,第三次购买,第四次购买,第五次购买;
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/4/8:”);
myDates.添加(“2016/4/8:”);
myProducsts.添加(“第1项”);
myProducsts.添加(“第2项”);
myProducsts.添加(“第3项”);
myProducsts.添加(“第4项”);
myProducsts.添加(“第5项”);
myProducsts.添加(“第6项”);
myProducsts.添加(“第7项”);
对于(int i=0;i
感谢您的帮助。您可以将for循环逻辑更改为以下内容
String currentDate = "";
for(int i = 0; i < myDates.size(); i++)
{
String next = myDates.get(i);
String nextPro = myProducsts.get(i) + "\n";
if (currentDate.equals(next)) {
dates.append(nextPro);
} else {
dates.append(next + nextPro);
currentDate = next;
}
}
String currentDate=“”;
对于(int i=0;i
您必须处理一些字符串格式,才能获得想要的输出。差不多。
currentDate
应该以null
开头。请参阅我建议的编辑。噢,很好。(实际上它应该以空字符串开头,以避免空指针:))事实上,我会反转等于检查。假设next是非空的,请检查next.equals(currentDate)
而不是currentDate.equals(next)
…现在,没有NPE。是的,任何一种方法都很好。谢谢你们,工作得很好。我只是不知道如何处理检查,看看它是否打印出来。再次感谢你们